This question already has answers here:
What does it mean to “program to an interface”?
(32个答案)
2年前关闭。
当我们使用时,我有点困惑
当我们使用
一开始,我以为它们是相同的,但是今天,我意识到它们是不相同的。例如,如果我呼叫
(32个答案)
2年前关闭。
当我们使用时,我有点困惑
List<String> lst = new LinkedList<>();
当我们使用
LinkedList<String> lklst = new LinkedList<>();
一开始,我以为它们是相同的,但是今天,我意识到它们是不相同的。例如,如果我呼叫
lst.getFirst()
,它将告诉我有错误。但是,如果我执行lklst.getFirst()
,则效果很好。我的问题是,什么时候使用lklst?为什么它们不同?另外,它是否对地图应用相同的规则。谢谢! 最佳答案
在左侧,您要声明变量的类型lst
。因为lst
的类型是List
,所以即使对象List
指向的确实是lst
,您也只能访问LinkedList
的方法。在声明像LinkedList
这样的具体类型的变量(访问更多方法/行为)与更抽象的接口(更安全,更好的分段代码)之间存在固有的权衡。
这是一个很大的话题,什么时候做一个与另一个不存在一个简单的答案(尽管那里有很多建议!)-您需要弄清楚哪种方法适合您的用例。
Effective Java-条款52:通过接口引用对象是此问题的典型规范,并且正如标题所暗示的,建议使用List
而不是LinkedList
。
关于java - 什么时候使用List,什么时候使用LinkedList?(java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46945598/