Java语言规范定义:
    jls7: 4.5.1: unlike ordinary type varables declared in a method signature, no type inference is required  when using a wildcard.
    <不同于普通的类型变量声明,通配符方式并不会进行类型推断>说明:不进行类型推断的话实际上就限制了数据的放入和取出。    
    简而言之,需要明确的告诉编译器此数据的上界和下界,否则编译时报错。
    jls7:The null reference can always be assigned or cast to any reference type
    从上面的Java语言规范中可以得出:
        Java中所有类的顶级父类是Object,可以认为Null是所有类的子类。
举个例子:
    <? extends T>:通配符?的类型在Null和T之间。 <? extends T>只能作为消费者,而不能放入类型的原因就在这里,编译器
不能确定放入的是什么类型,Null可以转化为任意类型;换一种说法,编译器不知道类型的上界,只清楚类型的下界。如下图:
JAVA PECS原则
JAVA PECS原则
<? super T>:通配符?的类型在T和Object之间。 <? super T>可以作为消费者也可以作为生产者的的原因就在这里,编译器
很清楚放入的类型下界是T,上界是Object。如下图:
JAVA PECS原则
JAVA PECS原则
    <? extends T>和<? super T>在使用时,只能转化为其上界,相信大家已经明白了吧。
    PS:个人原创,欢迎转载

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2022-02-20
  • 2021-11-29
  • 2022-02-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-29
  • 2022-01-19
  • 2021-06-25
  • 2022-01-05
  • 2021-09-21
  • 2022-12-23
  • 2021-07-11
相关资源
相似解决方案