"ClassA"클래스의 인스턴스이지만 "InterfaceI"인터페이스를 구현하는 클래스에 변수가 있어야합니다.클래스 A를 확장하고 일부 인터페이스를 구현해야하는 멤버 변수
는 분명히 이것은 하나 쉽게 다른 위해 수행 할 수 있습니다
private ClassA mVariable;
private InterfaceI mVaraible;
하지만 어떻게 적용 할 수 있습니다 개체 모두를 ClassA를 확장하고는 InterfaceB를 구현? 같은 뭔가 :
private <? extends ClassA & InterfaceI> mVaraible;
내가 필요하지만 난 구문의 아무 생각이 없다거나 심지어 가능한 경우. 나는 또한 GET 및 설정 방법이 필요합니다,하지만이 (내가 생각하세요?) 제네릭 수행 할 수 있습니다
확실한 해결책이, 그러나 InterfaceI과를 ClassA 모두 외부 libary의 일부
public class ClassB extends ClassA implements InterfaceI{
//whatever here
}
입니다 libary에는 ClassA와 InterfaceI를 확장하는 클래스가 있으며 ClassB를 확장하도록 편집 할 수 없으므로이 솔루션은 작동하지 않습니다.
당신은 할 수 없습니다, 기본적으로. 변수를 설정할 때이를 확인한 다음 필요할 때 캐스팅 할 수는 있지만 클래스를 일반화하지 않고 변수 자체에 해당 제약 조건을 표현할 수는 없습니다. –
Java8에는 다중 상속이나 일종의 믹스를 허용하는 마법이 있습니다. – Thufir
@Jon Skeet 변수를 설정할 때 어떻게 확인합니까? – jtedit