在Java中声明LinkedList

Már*_*rte 10 java collections linked-list list

我总是学习什么时候我们声明我们应该做的集合Interface ob = new Class(),如果我想使用例如我会做的LinkedList List ob = new LinkedList(),但是我不能访问LinkedList中的所有方法..是不是LinkedList ob = new LinkedList()100%正确?

Jon*_*eet 11

是不是LinkedList ob = new LinkedList()100%正确吗?

嗯,我会建议使用通用的形式,但肯定的-如果你想使用功能,这是具体LinkedList,需要相应声明变量.

您可能想要检查Deque<E>Queue<E>接口是否具有您想要的功能.如果他们这样做,请使用那些与描述您需要的内容相符的内容,而不是您将使用的实现.

  • 实际上没有任何方法_specific_到`LinkedList`; 一切都要么覆盖超类方法(比如`clone()`),要么实现其中一个接口的方法.如果你想使用`Deque`指定的方法(例如,`peek()`)以及`List`指定的方法(例如``indexOf()`),但两者都没有指定,那么就没有多少选择将变量声明为`LinkedList`. (3认同)

rua*_*akh 6

是,

LinkedList<...> items = new LinkedList<...>();
Run Code Online (Sandbox Code Playgroud)

如果您知道items将取决于界面LinkedList<T>中未捕获的方法,则完全正确List<T>.


mic*_*e b 5

您应该始终尝试将声明保持在可能的最高级别,这意味着您应该停在提供您需要的所有功能的最高级别:如果List方法不够,那么您的LinkedList声明完全没问题。