Collection col = new LinkedList();
有办法拨打col.addFirst
吗?
答案 0 :(得分:5)
是的,如果你转向LinkedList
:
((LinkedList) col).addFirst(..)
但这是不鼓励的,因为你并不总是知道集合的具体类型。您可以查看instanceof
,但这不是一个好的面向对象的代码。如果您确实需要LinkedList
,则需要LinkedList
(而不是Collection
)
答案 1 :(得分:3)
如果将变量声明为Collection,这意味着您通常计划在程序的其余部分中将此变量视为简单集合,而不是链接列表。 Collection接口提供的方法对于使用此变量的程序的其余部分应该足够了。
如果需要访问仅存在于LinkedList类中的特定方法,则该变量应声明为LinkedList。
答案 2 :(得分:2)
我不确定为什么你需要在这种情况下使用Collection,但如果你使用接口 java.util.Deque 你仍然可以“编程到接口而不是实现” ,偶然,扩展java.util.Collection
Deque<String> deque = new LinkedList<String>();
deque.addFirst("Hello");
Collection<String> collection = deque;
答案 3 :(得分:2)
如果使用List而不是Collection,则可以使用.add()方法。在索引0处添加以将其放在第一个位置。
list.add(0, object)