如何解决泛型类型返回类型错误:必需的类型T,提供了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
将在运行时。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。