【问题标题】:Use ArrayList or List in method parameter list在方法参数列表中使用 ArrayList 或 List
【发布时间】:2015-07-07 22:41:42
【问题描述】:
您好我想知道使用 list 或 arrayList 作为方法参数是否更好?
例如-
public static void calculate(List<T> list) {}
或
public static void calculate(ArrayList<T> list) {}
我认为使用 List 会更好,因为它为您提供了使用链表或其他任何东西的更多选择...但如果我错了,您能告诉我为什么 ArrayList 更好或为什么 List 更好吗?
谢谢
【问题讨论】:
标签:
java
list
methods
arraylist
parameters
【解决方案1】:
代码到接口,代码到接口,代码到接口。
如果有人想使用您的 API 但传递不同类型的列表怎么办?甚至根本不是一个列表,而是一个集合?使用您的 API 所需的最通用的接口。
【解决方案2】:
你的方法应该接受任何对该方法有意义的参数。
如果您的方法对任何List 都有意义,则参数的类型应为List<?>。
如果您的方法不需要按索引访问项目,则允许该方法接受Collection<?> 或Iterable<?> 可能是个好主意。
如果您的方法只对数字列表有意义,则参数的类型应为 List<? extends Number>。
一般来说,参数类型为ArrayList 不是一个好主意。如果您的方法只对特定类型的List 有意义,例如可变的Lists,或接受null 项目的Lists,您应该使参数具有List<?> 类型,但仔细记录要求。