这两行之间有什么区别?

时间:2011-03-06 02:43:51

标签: java

  

可能重复:
  Why should the interface for a Java class be prefered?

ArrayList<Integer> al = new ArrayList<Integer>();


List<Integer> l = new ArrayList<Integer>();

这两行之间有什么区别?在任何情况下,是否有任何规则我应该使用前者而不是后者?或者反过来呢?使用特定的优势或缺点是什么?

感谢。

2 个答案:

答案 0 :(得分:4)

第一行创建ArrayList并将其存储在ArrayList类型的变量中,第二行将其存储在List类型的变量中。

ListArrayList是一个实现的接口。决定在(List或特定实现中存储实例的类型,例如ArrayList)的经验法则是,您应该存储在适合您需要的最广义级别。这意味着,如果您知道该变量必须符合仅由ArrayList而非List展示的行为,那么您应该使用ArrayList,否则,请使用List 。 (这也适用于LinkedList或其他List实现

答案 1 :(得分:1)

你之所以想要使用它的第二行,是因为编程接口通常比编写类更好,有时它与良好实践相关,并且最终得到的代码之一是:< / p>

最好测试一下 可以使用不同的实现 它没有耦合到ArrayList

有关详细信息,您可以查看“好莱坞原则”或策略模式