2011-01-15 1 views
2

LinkedList를 인스턴스화하고 List 및 Dequeue 인터페이스의 메서드에 액세스해야하며 구체적인 구현을 입력하지 않으려는 경우 인터페이스간에 전송하려면 방법이 있습니까?List 및 DeQueue 메서드가 모두 필요할 때 java에서 LinkedList 사용

즉 :

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(); 

나 근처 일식 한이 그래도 컴파일해야하지 마십시오.

+1

나는 Go의 오리 - 타이핑 스타일 인터페이스가 매우 매력적이었던 이유가 있음을 알았다. –

+0

감사합니다. 게으른 원숭이 –

0

ll을 java.util.List로 선언하는 경우 어떻게 할 수 있는지 알 수 없습니다. 자신의 클래스를 만들 수 있어야하지만 그때 당신은 주식 클래스/인터페이스가 아니라 묶여있을거야 ...

1

자바에서 당신은 선택의 여지가 있지만 구체적인 유형을 사용하거나 두 가지 하나는 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; 
    } 

나는 특히 그렇게 생각하지 않는다.

관련 문제