首页 > 代码库 > 泛型里的super和extend

泛型里的super和extend

<? extends T>和<? super T>应该怎么用?

 

网上看到一些比较难懂的回答,但是在EffectiveJava(2th Edition)遇到简单明了的解释:

If your parameter is a producer, it should be <? extends T>, if it‘s a consumer it has to be <? super T>

即,做生产者的方法的参数用extends,消费者的方法的参数用super。

 

这里翻译一下:

<? extends T> 为 T的某个子类型 的 类

<? super T> 为 T的某种超类 的 类

 

泛型里的super和extend