gpt4 book ai didi

Java 泛型 : incompatible types

转载 作者:搜寻专家 更新时间:2023-11-01 02:04:15 25 4
gpt4 key购买 nike

我有一个通用类 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) {
...
}
...
}

使用 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> 

最佳答案

请注意,您的工作示例与存在编译错误的单行代码之间缺少信息。

它不知道特化。你需要做类似的事情

MyClass.<String>with(this).setClass(MyCustomClass.class);

所以它知道您将与它“交谈”。

关于Java 泛型 : incompatible types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com