我正在阅读 java 泛型,我遇到了一个有趣的查询。我的问题如下。
对于上限通配符
public static void printList(List<? extends Number> list) { for (int i = 0; i < 10; i++) { list.add(i);// gives compilation error } }
对于下界通配符
public static void printList(List<? super Integer> list) { for (int i = 0; i < 10; i++) { list.add(i);// successfully compiles } }
我对此感到困惑,因为查看 Sun Oracle 文档我了解代码也应该针对第 1 点进行编译
谁能帮我理解这一点?