This question already has answers here:
What does it mean to “program to an interface”?
                            
                                (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/

10-11 22:30
查看更多