我见过很多次这样的语句:
List list = new ArrayList<String>();
这样写有什么意义?我的意思是把对象的类型设置为一个超类或它的实现接口。这会有什么不同或提高性能吗?
备注
我的英语很差,我可能把题目和正文写得很混乱。请编辑该行,然后删除该行。
这句话意味着您可以使用使用ArrayList
实现的List
的所有功能,但也可以使用LinkedList
内部的功能。虽然将对象类型设为ArrayList
没有害处,但它可能很有用,例如,如果您有一个方法接受List
参数而不是ArrayList
,则您的选择已经扩展,并且您可以有其他实现该类型的类,例如LinkedList
。
简单地说,如果你使用接口List
作为它的类型,你会说:"我想使用任何做这些事情的类来做我自己的事情",因为List
是一个接口。但如果你只使用ArrayList
,你会说:"我只想用这个特定的类来处理我的东西"。总之,它给了您更多的灵活性。
除此之外,使用超类作为类型或使用ArrayList
或其他子类作为本身并没有太大区别。
希望这就是你所问的,并希望它有意义。如果没有,请随时提出任何问题。