鉴于类型List<?>
、List<Object>
、List<? super Number>
、List<Number>
、List<Integer>
和List<? extends Number>
,我试图理解它们的层次结构。
我知道它List<Integer>
不是 的子类型List<Number>
,即使Integer
它确实是 的子类型Number
,所以我认为它是 的子类型List<? extends Number>
。
但从List<? extends Number>
直觉上看,它似乎是 的子类型,毕竟List<Number>
它是List<Integer>
的后代,正如我的想法所示:List<Number>
那么,如果一个类型是另一个类型的后代,但不是直接的,它是否仍然是其祖先的子类型(或者我在图中只是错了)?这个练习也让我对?
vs.有点困惑Object
......实际上,看起来我可能有List<Object>
并且List<? super Number>
混淆了。我想最大的问题之一是,“‘一切’都是Object
……还是一切都是…… ?
?” 或者两者都有……或者两者都没有?