在方法参数列表中使用 ArrayList 或 List

Use ArrayList or List in method parameter list

您好,我想知道使用 list 还是 arrayList 作为方法参数更好?

例如-

public static void calculate(List<T> list) {}

public static void calculate(ArrayList<T> list) {}

我认为使用 List 更好,因为它为您提供了更多选择来使用链表或其他...但如果我错了,您能告诉我为什么 ArrayList 更好或 List 更好吗?

谢谢

代码到接口,代码到接口,代码到接口。

如果有人想使用您的 API 但传递的是不同类型的列表怎么办?或者根本不是一个列表,而是一个集合?使用您 API 需要的最通用的界面。

您的方法应该接受该方法有意义的任何参数。

如果您的方法对任何 List 都有意义,则参数的类型应为 List<?>.

如果您的方法不需要按索引访问项目,允许该方法接受 Collection<?>Iterable<?>.

可能是个好主意

如果您的方法仅适用于数字列表,则参数类型应为 List<? extends Number>.

一般来说,参数类型为 ArrayList 并不是一个好主意。如果您的方法仅对某些类型的 List 有意义,例如可变的 List 或接受 null 项目的 List,您应该使参数具有输入 List<?> 但仔细记录要求。