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

时间:2015-04-28 21:30:13

标签: java list methods arraylist parameters

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

例如 -

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

如果有人想要使用您的API但是传递不同类型的列表会怎么样?甚至不是一个列表,而是一个集合?使用API​​所需的最通用接口。

答案 1 :(得分:1)

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

如果您的方法适用于任何List,则参数应为List<?>类型。

如果您的方法不需要按索引访问项目,那么允许该方法接受Collection<?>Iterable<?>可能是个好主意。

如果您的方法仅对数字列表有意义,则参数应具有类型List<? extends Number>

通常,参数的类型ArrayList不是一个好主意。如果您的方法仅对某些类型的List有意义,例如List s可变,或List s接受null项,那么您应该让键入List<?>,但要仔细记录要求。