java泛型,一种强制执行超级或子类型的方法

kgsdhlau  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(333)

假设我有这样一个类和方法:

class MyClass<T> {

    void doStuff(Wrapper<T> wrapper) {
        //impl.
    }
}

参数“wrapper”的通用边界可以修改为 Wrapper<? extends T> 使方法接受t的子类型,并且 Wrapper<? super T> 接受超级类型。但是,有没有办法修改myclass,使其同时接受t的子类型和超级类型(而不是任何类型),并且只有一个方法名(可能存在过载)
我可以跟你一起去 Wrapper<?> 当然,但是“accept anything”与“accept something that's in the class hierarchy for t”不同。我也可以做两种不同的方法,一种是 <? super T> 还有一个是 <? extends T> ,但是这些方法需要不同的名称,因为擦除后签名是相同的。
注:出于好奇,请考虑这个问题。

jei2mxaa

jei2mxaa1#

你可以试试下面的方法

<S extends T> void doStuff(Wrapper<? super S> wrapper)

但需要再次检查是否满足您的要求。

相关问题