接口方法agruments Arrays vs util List

时间:2011-05-23 04:47:57

标签: java arrays list interface

我正在编写一个接口及其实现。界面有一个像

这样的方法
doSomething(String[] strs, Integer[] ints, String msg);

我将参数声明为数组只是因为它将调用具有类似参数的外部接口。有人建议doSomething agruments应该是util List而不是数组。但我找不到任何最佳实践解释为什么util List更适合的原因?

3 个答案:

答案 0 :(得分:1)

列表更易于使用,因为它们具有更丰富的API和各种实现。因此,结果是它通常更灵活和可维护。

Josh Bloch的Effective Java突出了另一个偏好列表的原因:“不变性”。 在编译时检查泛型,因此类型化列表实际上会捕获比数组更多的错误:

// Fails at runtime!
Object[] objectArray = new Long[1];
objectArray[0] = "I don't fit in"; // Throws ArrayStoreException
// Won't compile!
List<Object> ol = new ArrayList<Long>(); // Incompatible types
ol.add("I don't fit in");

因此,在某些情况下,使用Lists over Arrays实际上更安全。

还有更多的东西,但它开始变得难以解释。请参阅Effective Java相关部分的链接,第5章:http://java.sun.com/docs/books/effective/generics.pdf

HTH

答案 1 :(得分:0)

基本上list是抽象类型,它需要由像ArrayList等其任何家族成员再次实现。因此在使用数组和列表方面没有太大差别,两者都是相同的。只有在可维护性方面我们才能使用List接口,我们可以根据需要在以后的任何List接口系列中实现它。同时列表提供对数组的灵活操作。

答案 2 :(得分:0)

这属于可维护性。您会发现使用为您准备的方法非常方便。