Java 接口方法图形数组与util列表
我正在编写一个接口及其实现。该接口有如下方法Java 接口方法图形数组与util列表,java,arrays,list,interface,Java,Arrays,List,Interface,我正在编写一个接口及其实现。该接口有如下方法 doSomething(String[] strs, Integer[] ints, String msg); 我将参数声明为数组只是因为它将调用具有类似参数的外部接口。有些人建议剂量表应该是util列表而不是数组。但我找不到任何最佳实践来解释为什么util List更可取 Loc基本上列表是抽象类型,需要由其任何家族成员(如ArrayList等)重新实现。因此,在性能方面,使用数组和列表没有太大区别,两者都是相同的。只有在可维护性方面,我们选择列
doSomething(String[] strs, Integer[] ints, String msg);
我将参数声明为数组只是因为它将调用具有类似参数的外部接口。有些人建议剂量表应该是util列表而不是数组。但我找不到任何最佳实践来解释为什么util List更可取
Loc基本上列表是抽象类型,需要由其任何家族成员(如ArrayList等)重新实现。因此,在性能方面,使用数组和列表没有太大区别,两者都是相同的。只有在可维护性方面,我们选择列表接口,以后可以根据需要为任何列表接口家族实现。列表还提供了灵活的数组操作。列表基本上是抽象类型,需要由其家族成员(如ArrayList等)重新实现。因此没有太大区别就性能而言,在中使用数组和列表时,两者是相同的。只有在可维护性方面,我们才选择列表接口,以后我们可以根据需求为任何列表接口系列实现它。列表还提供了灵活的阵列操作。列表更易于使用,因为它们有更丰富的API和各种实现。因此,结果是它通常更加灵活和可维护 Josh Bloch的高效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");
//运行时失败!
Object[]objectArray=new Long[1];
objectArray[0]=“我不适合”//抛出ArrayStoreException
//不会编译!
List ol=new ArrayList();//不兼容的类型
添加(“我不适合”);
因此,在某些情况下,使用列表而不是数组实际上更安全
事情远不止这些,但开始难以解释了。参见有效Java第5章相关章节的链接:
列表更容易使用,因为它们有更丰富的API和多种实现。因此,结果是它通常更加灵活和可维护 Josh Bloch的高效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");
//运行时失败!
Object[]objectArray=new Long[1];
objectArray[0]=“我不适合”//抛出ArrayStoreException
//不会编译!
List ol=new ArrayList();//不兼容的类型
添加(“我不适合”);
因此,在某些情况下,使用列表而不是数组实际上更安全
事情远不止这些,但开始难以解释了。参见有效Java第5章相关章节的链接:
HTH这属于可维护性。您会发现使用为您准备的方法非常方便。这属于可维护性。您会发现使用为您准备的方法非常方便。这是一个很好的讨论。这是一个很好的讨论。