在方法参数列表中使用 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<?>
但仔细记录要求。
您好,我想知道使用 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<?>
但仔细记录要求。