![](/img/trans.png)
[英]Error in Java Generics - Required type: List<MyClass> Provided: List<T>
[英]Generics type return type error: required type T, provided MyObject
嗨,我有一些类声明如下:
class SuperObject {
}
class SuperClass<T extends SuperObject> {
}
class MyObject extends SuperObject {
}
class MyClass<T extends SuperObject> extends SuperClass<T> {
protected T method() {
return new MyObject(); // error: required type T, provided MyObject
}
}
我可以知道这段代码有什么问题吗? 为什么我不能返回MyObject
? 我该如何解决?
我假设你想做这样的事情:
abstract class SuperClass<T extends SuperObject> {
abstract T method();
}
class MyObject extends SuperObject { }
class MyClass extends SuperClass<MyObject> {
protected MyObject method() {
return new MyObject();
}
}
超类型定义了特定类型与特定限定类型一起使用的泛型类型。 在这种情况下, SuperClass
使用泛型类型,它必须是SuperObject
的协变类型。 MyClass
扩展了这样的超类并使用其特定类型MyObject
实现了这样的抽象方法,因此该方法的返回类型为MyObject
。
为什么我不能返回 MyObject? 我该如何解决?
你可以从我上面的文字中得出它。 MyObject
根本无法分配给T
因为编译器无法预测T
将在运行时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.