2012-04-05 4 views
1

생성자에서 전달 된 (/ 주입 된/자체) 중첩 클래스가있는 수퍼 클래스가 있습니다.하위 클래스의 공급자로부터 슈퍼 클래스 공급자 구성

마찬가지로 내가 생성자에서 (공급자로) 주입되는 자체 중첩 클래스가있는 하위 클래스가 있습니다. Subclass.NestedClass는 Superclass.NestedClass를 상속합니다.

public class SuperClass { 
    @Inject SuperClass(Provider<SuperClass.Parameters> superParam) { 
    } 

    public class Parameters { 
    int a; 
    } 
} 

public class Sub extends SuperClass { 
    @Inject Sub(Provider<Sub.Parameters> subParam) { 
    // Need to call super here with the appropriate superclass's provider 
    } 

    public class Parameters extends SuperClass.Parameters { 
    int b; 
    } 
} 

인가가 난 하위의 생성자에서 (즉 공급자) 슈퍼를 호출 할 수 있도록 내가 SuperClass.Parameters의 제공에 Sub.Parameters의 공급자를 변환 할 수있는 방법입니다.

+0

나 자신을 알아 냈어. 수퍼 클래스의 생성자는 이제 @Inject SuperClass (Provider . "? extends"내 문제 해결. – Bajji

+0

을 읽습니다. 답변으로 추가하고 해결했다고 표시하십시오. 자신의 질문에 대답하는 것이 매우 합법적이므로 도움이됩니다. 감사합니다! – janhink

+0

@ eQui 완료했습니다. 감사합니다! – Bajji

답변

0

Java generics가 도움이되었습니다.

솔루션 :

public class SuperClass { 
    // Constructor 
    @Inject SuperClass(Provider<? extends SuperClass.Parameters> superParam) { 
    } 

    public class Parameters { 
    int a; 
    } 
} 

public class Sub extends SuperClass { 
    @Inject Sub(Provider<Sub.Parameters> subParam) { 
    super(subParam); 
    } 

    public class Parameters extends SuperClass.Parameters { 
    int b; 
    } 
} 

는 슈퍼 클래스 생성자의 매개 변수? "확장"의 차이를 관찰한다.

관련 문제