如果我声明一个这样的新列表:
List<String> listExample = someFunction();
将使用哪个列表接口实现?
编辑:感谢您的回答。什么被认为是干净的方式,我应该总是用新的声明列表?
答案 0 :(得分:4)
正如Eran评论的那样,完全取决于someFunction();
返回的内容。ArrayList<E>
和LinkedList实现了List接口。
你可以尝试,
System.out.println("" + listExample.getClass());
找出已实施的内容。来自docs
,
public final Class<?> getClass()
返回此Object的运行时类。返回的Class对象是 由静态同步方法锁定的对象 代表班级。
答案 1 :(得分:1)
无论你在建设什么,例如LinkedList,ArrayList,Vector,Stack in和someFunction()
的返回将使用listexample
实现。如果您使用List接口引用,它有一个好处,您可以为其分配任何类型的对象(LinkedList,ArrayList,Vector,Stack)。
答案 2 :(得分:0)
例如,如果你给 List listExample = new ArrayList(); 然后将为ArrayList创建Object,list只是listExample的一个实例。
你可以使用getClass()来查看该列表的例子