2013-02-22 2 views
0

안녕하세요 저는 흥미로운 코드를 작성 중이며 생각이 엇갈 렸습니다. 이 "OtherInterface"를 작성하는 possiblity를가 거기에 내가 예를일반 인터페이스 목록을 구현하는 방법

public interface OtherInterface extends SomeInterface<Integer>, 
SomeInterFace<String>, SomeInterface<Number>, ... 

에 대한 다양한 개체에 대한이 하나를 확장해야합니다 다른 인터페이스를 가지고, 지금

public interface SomeInterFace<T> 
{ 
    public List<T> doSomething(); 
} 

: 여기

몇 가지 간단한 코드입니다 "SomeInterface"객체의 목록을 구현하는 방식으로? 당신이 다른 제안으로 다음 OtherInterface의 형식 인수의 모든 유형을 처리 할 수있는 경우

+1

자바 제네릭에서는 불가능합니다. 동일한 이름을 가진 여러 메소드를 가질 수 없으며 다른 매개 변수로 동일한 일반 유형을 리턴합니다. 이것은 generics가 java에서 처리되는 방법 때문입니다. – jtahlborn

+0

그냥'public 인터페이스 OtherInterface extends SomeInterface '에 대해 ?? 당신이 일반적인 유형을 정의 할 경우 컴파일 것 @ZeDonDino – PermGenError

+0

@PremGenError은 그게 전부 컴파일 가능한, 메신저 확실하지 생각하지 않는다'공공 인터페이스 OtherInterface는 SomeInterface ' – ZeDonDino

답변

4

, 당신은 쓸 수 있습니다 :

public interface OtherInterface<T> extends SomeInterface<T> 

을하지만, 당신은 단지 유형의 특정 목록을 SomeInterface을 구현해야하는 경우 인수 (예 : StringNumber)가 있으면 그렇게 할 수 없습니다. 컴파일시 SomeInterface<(anything)>type erasure으로 인해 SomeInterface이되고 컴파일러가 안전하지 않은 캐스팅을 시도하지 않았는지 (또는 확인하지 말라고 말한 후) 캐스팅이 삽입됩니다.

public interface OtherInterface extends SomeInterface, SomeInterface { 
    public List doSomething(); 
    public List doSomething(); 
} 

... 분명한 이유 무효 : 따라서, 당신은 이런 식으로 뭔가를 보이는 클래스를 작성하려고 할 것입니다!

희망 하시겠습니까?

+1

나를 이길 ... +1 –

+0

하. 중서부에서 가장 빠른 키보드라고 생각합니다. :) –

+0

만약 당신이 내 질문에 당신의 대답을 전혀 내게 도움이되지 않는다 : "귀하의 권리가 있지만 이것은"A "(예 : Integer) 인터페이스"OtherInterface " "SomeInterface"같은 개체가 있습니다. 내가 필요로하는 것이 없습니다. " – ZeDonDino

관련 문제