2011-01-15 25 views
2

如果我想實例化一個LinkedList並需要訪問List和Dequeue接口中的方法,並且不想鍵入具體實現並且不想要在接口之間進行投射,有沒有辦法?在Java中使用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 

回答

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

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

Foo ll = new Bar(); 

沒有安裝Eclipse靠近我,這應該不過編譯。

+1

我知道Go的鴨子式界面風格非常有吸引力。 –

+0

謝謝你,懶猴 –

0

如果您將ll聲明爲java.util.List,我看不出如何做到這一點。應該可以創建自己的班級,但你會被綁定到那個,而不是股票級別/接口...

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; 
    } 

不是說我特別喜歡那個,不過。

相關問題