我看到它应该是这样声明的,所以它更正确。
List<String> list = new LinkedList<>();
但是当我通过 object: 调用方法时addFirst(),这个想法本身就替代了以下构造:
((LinkedList<String>) list).addFirst();
为什么我不能这样做,list.addFirst()请告诉我!我注意到它只有在你这样声明时才有效:
LinkedList<String> list = new LinkedList<>();
但正如我在上面已经展示的那样,使用这种结构更正确:
List<String> list = new LinkedList<>();
如我错了请纠正我
TL;博士;
Deque<String> list = new LinkedList<>();必须使用最高级别的父级,其功能足以解决问题。这在创建库时尤其重要。
那些。您认为“我真正需要从这个对象中得到什么”,基于此,您已经做出了决定。例如
Map<K,V>,在使用时,它几乎总是无关紧要HashMap TreeMap或不同。因此,我们写Map.LinkedList在此示例中,使用了addFirst从接口获得的类中的方法Deque。如果你想使用它(不是add(int index, E element)),然后写Deque如果随机访问对你很重要(这从代码片段中不清楚),然后写LinkedList