繁体   English   中英

抽象类通过构造函数的通用继承

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

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