나는 일반적인 정적 팩토리 메소드와 setter 메소드와 클래스 MyClass<T>
있습니다 setter 메소드와자바 제네릭 : 호환되지 않는 유형
public class MyClass<T> {
public static <T> MyClass<T> with(Context context) {
MyClass<T> myClass = new MyClass<>();
myClass.context = context;
return myClass;
}
public void setClass(Class<? extends CustomClass<T>> customClass) {
...
}
...
}
, 사용자는 "에서는 CustomClass"에서 확장하는 모든 클래스를 설정할 수 있습니다.
지금까지 그렇게 좋았습니다. 내가하는 경우 :
MyClass<String> myClass = MyClass.with(this);
myClass.setClass(MyCustomClass.class);
완벽하게 작동합니다. 하지만 내가하는 일 :
MyClass.with(this).setClass(MyCustomClass.class);
컴파일되지 않습니다. 컴파일러는 다음을 출력합니다.
Error:(44, 87) error: incompatible types: Class<MyCustomClass> cannot be converted to Class<? extends MyCustomClass<Object>>
왜 두 번째 옵션으로 컴파일하지 않을 지 모르겠다.
public class MyCustomClass extends CustomClass<String>
감사합니다 당신을 너무 많이! 작동 중! –