如果我想实例化一个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
答案 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,我不知道如何做到这一点。应该能够创建自己的类,但是你将被绑定到那个而不是股票类/接口......