将集合声明为对象和Java中的接口有什么区别?

时间:2015-10-26 11:38:59

标签: java collections

如果我说:

,是否有分歧?
List<String> names = new ArrayList<String>(); 

ArrayList<String> names = new ArrayList<>();

2 个答案:

答案 0 :(得分:0)

有区别。第一行比第二行更通用。

例如,如果您有一个以List<String>作为输入参数的方法,则只能传递List<String>而不是ArrayList<String>

如果您不需要使用ArrayList特定方法,则应使用第一行!

答案 1 :(得分:0)

是的,存在差异。

(首选)第一种情况允许您对集合进行操作,无论列表概念的具体实现如何。然后,您可以进一步使用其他具体类型,而以下代码保持有效。

在第二种情况下,您可能想要使用具体类型的某些特定方法,然后更改实例可能会影响更多代码,并使其更难以发展。