我知道以下内容是正确的。
List<? extends Number> aNumberSuperList = new ArrayList<>();
List<? extends Integer> aIntegerSuperList = new ArrayList<>();
aNumberSuperList = aIntegerSuperList;
但是什么类型的对象可以添加到这样的列表中。
List<? extends Number> aNumberSuperList2 = new ArrayList<>();
aNumberSuperList2.add(???)
最佳答案
仅null
可以添加到 List<? extends Number>
。这是因为确切的类型参数未知。一个List<Integer>
可以分配给这个列表,List<AtomicLong>
也可以。 。编译器必须阻止对 add
的调用除了 null
以外的任何内容,以避免出现 Integer
的情况可能会添加到称为 List<? extends Number>
的内容中,但实际上是 List<Double>
, 例如。 null
是在此处添加的唯一安全的内容,因为它可以是任何类型。
关于Java 泛型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27001554/