[英]Abstract class generic-through-constructor inheritance
我想做一个像下面的模型,一个通用的抽象类从构造函数中获取类型(ala ArrayList())
public abstract class AbstractParent<T> {
protected AbstractParent(T... params){
//(...)
}
}
public Child<U,V> extends AbstractParent<????>{
public Child(U param, V param2){
super(param, param2);
}
}
但是我不能使用'?' 或父母的T为'????' 类型。 我希望Child<String,String>
是AbstractParent<String>
而Child<String,Integer>
是AbstractParent<? extends Object>
AbstractParent<? extends Object>
,
...类似于Arrays.asList()
方法的工作方式: asList("a","b")
返回List<String>
而asList("a",1)
返回List<? extends Object>
List<? extends Object>
。
为什么不允许这样做,或者我该如何解决?
如果希望父类型是U和V的某种超类型,则仍然必须在Child
的泛型参数中明确指定它。 您可以执行的最接近的操作是类似于class Child<X, U extends X, V extends X> extends AbstractParent<X>
。
您不能自动推断出一个普通的超类型,因为您似乎暗示着Arrays.asList
在做; 您不能在类型级别上做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.