在需要List和DeQueue方法时,在java中使用LinkedList

时间:2011-01-15 01:28:10

标签: java interface

如果我想实例化一个LinkedList并且需要访问List和Dequeue接口中的方法,并且不想键入具体的实现,并且不想在接口之间进行转换,那么有办法吗?

即:

LinkedList ll = new LinkedList(); // don't want to do this...


List ll = new LinkedList();
ll.peekFirst(); // can't access peekFirst method
((DeQueue) ll).peekFirst(); // Kinda ugly

3 个答案:

答案 0 :(得分:5)

public interface Foo<T> extends List<T>, Deque<T>{}

public class Bar<T> extends LinkedList<T> implements Foo<T>{}

Foo ll = new Bar();

不要让我附近的日食,这应该编译。

答案 1 :(得分:1)

我认为在Java中你别无选择,只能使用具体类型,或者存储对同一对象的两个引用,一个类型为List,另一个类型为Dequeue。

List<T>       list;
Dequeue<T>    queue;

/** Construct a new instance of SomeClass */
private SomeClass() {
    LinkedList<T> tmp=new LinkedList<T>();
    list=tmp;
    queue=tmp;
    }

不是说我特别喜欢那样。

答案 2 :(得分:0)

如果您将ll声明为java.util.List,我不知道如何做到这一点。应该能够创建自己的类,但是你将被绑定到那个而不是股票类/接口......