我有一個泛型類MyClass<T>
使用靜態工廠方法和setter方法:Java泛型:不兼容的類型
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) {
...
}
...
}
隨着setter方法,用戶可以設置從「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>>
我不知道爲什麼它不會編譯第二個選項。 MyCustomClass
是這樣的:
public class MyCustomClass extends CustomClass<String>
感謝你這麼多!它正在工作! –