这是一个真正的初学者问题(我仍在学习 Java 基础知识)。
我可以(某种程度上)理解为什么方法会返回 List 而不是 ArrayList,或者为什么它们会接受 List 参数而不是 ArrayList。如果它对方法没有影响(即,如果不需要 ArrayList 中的特殊方法),则这将使方法更加灵活,并且更易于调用者使用。对于其他集合类型(例如 Set 或 Map)也是如此。
我不明白的是:创建这样的局部变量似乎是常见的做法:
List<String> list = new ArrayList<String>();
虽然这种形式不太常见:
ArrayList<String> list = new ArrayList<String>();
这里有什么好处呢?
我所能看到的只是一个小缺点:必须为 java.util.List 添加单独的“导入”行。从技术上讲,可以使用“import java.util.*”,但我也不经常看到这种情况,可能是因为“import”行是由某些 IDE 自动添加的。
当你阅读时
List<String> list = new ArrayList<String>();
你会觉得你所关心的只是成为一个List<String>
并且您不太重视实际实施。此外,您将自己限制为由以下人员声明的成员:List<String>
而不是具体的实现。你并不关心你的数据是否存储在线性数组或一些奇特的数据结构中,只要它看起来像一个List<String>
.
另一方面,阅读第二行会让您知道代码cares关于变量是ArrayList<String>
。通过编写此内容,您(对未来的读者)隐含地说,您不应该盲目地更改实际的对象类型,因为代码的其余部分relies事实上,它确实是一个ArrayList<String>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)