2016-09-01 3 views
1

서브 클래스를 필요 있도록오버라이드 방법 파라미터는 I 연장 추상 슈퍼 클래스 2 클래스를

public abstract class MyAbstract {} 

public class A extends MyAbstract {} 

public class B extends MyAbstract {} 

I는 파라미터로서 MyAbstract의 서브 클래스를 취하는 방법을 갖는 인터페이스가

public interface MyInterface { 
    <T extends MyAbstract> void someMethod(T param); 
} 
그때 인터페이스

public class AnotherClass implements MyInterface { 
    @Override 
    <T extends MyAbstract> void someMethod(T param) {} 
} 

그러나 나는 단지여보세요하도록 구현하는 클래스를

메서드에서 사용되는 MyAbstract의 특정 하위 클래스 여기

는 몇 가지가 지금까지 시도 있습니다

<T extends A> void someMethod(T param); //doesn't override the method 

void someMethod(A param); //doesn't override the method 

이 인터페이스는 해당 매개 변수의보다 제한된 버전을 지정하는 일반 매개 변수와 해당 인터페이스의 구현을 가지고 어쨌든이거나 이것은 단순히 가능하지 않습니까?

+1

당신을 질문은 모순을 구체화합니다. 매개 변수가 다른 메소드는 정의에 따라 대체 될 수 없습니다. – EJP

답변

3

예, 당신은 인터페이스를 만들 자체 실제로 일반 매개 변수를 취 사용하는 경우

public interface MyInterface<T extends MyAbstract> { 
    void someMethod(T param); 
} 

그런 다음 당신이 그것을 제한 할 수 있습니다

public class AnotherClass<T extends A> implements MyInterface<T> { 
    @Override 
    public void someMethod(T param) {} 
} 

또는 :

public class AnotherClass implements MyInterface<A> { 
    @Override 
    public void someMethod(A param) {} 
} 
관련 문제