我在读java泛型,我遇到了一个有趣的查询。我的问题如下。上下界通配符的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 } }
我很困惑这一点,因为看着太阳Oracle文档在我理解,代码也应编译为点1以及
Upper Bound Wildcard Lower Bound Wildcard
任何人都可以请帮我理解这一点吗?
@baraky:感谢您的链接我错过了它......但仍然问题是为什么它不编译时,通用类型知道它必须是一个类扩展的数字。对于多余的问题抱歉。对我来说还不清楚。 – chaosguru 2013-04-24 10:17:40