繁体   English   中英

泛型类型返回类型错误:需要类型 T,提供 MyObject

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM