我必须实现一个将SuperClass(泛型)作为返回类型的方法,并且必须返回特定的子类(它不是泛型)Object。 我的方法签名是无法将子类对象返回到Java中的泛型超类返回类型
private <A extends ClassA<B>, B> SuperClass<A,B> methodA(){
subclass sc = new subclass();
return sc;
}
编译器会为无法转换的子类进行超;
,如果我把它强制转换为超类,它给我的警告作为Uncheckedcast从子类到超
另一种方式我试图这样做是
private <SC extends SuperClass<A,B>, A extends ClassA<B>, B> SC methodA(){
subclass sc = new subclass();
return sc;
}
它仍然给了我同样的错误:无法从转换SC的子类。
最后我想这
private <SC extends SuperClass<A,B>, A extends ClassA<B>, B> SC methodA(){
SC sc = (SC)new subclass();
return sc;
}
,现在有一个警告选中演员。
我的子类声明
subclass extends SuperClass<ClassC, ClassD>
where ClassC extends ClassA and ClassD is a concrete type.
我父声明
class SuperClass<A extends ClassA<B>, B>
谁能告诉我,为什么我们不能亚型对象返回到一个通用的超为什么会有这样做的没有警告的办法它?
您可以添加Superclass和Subclass(es)的类标题吗? – Tom
ClassC是否延伸ClassA?如果不是,你打破SubClass中SuperClass的允许范围。 –
redge