考虑以下代码:
List<? extends Integer> lst= new ArraList<Integer>();
lst.add(5);//Compile error
lst.get(5);//OK
在第二个字符串中,我们遇到编译错误,因为我们必须保证 List<? extends Integer>
的所有潜在子类型中都有方法 add(int)编译器知道它的 null
只是,第三个字符串返回未知类型,编译器将其转换为对象,不是吗?
最佳答案
PECS. Producer extends, Consumer super.
List<? super Integer> lst= new ArrayList<Integer>();
lst.add(5);// No Compile error
列表现在是一个消费者,你将对象放入其中......
还有这个
lst.get(5);
是一个不同的蛋糕...您提供您想要获取的整数索引...(更不用说Sotirios提到的:返回类型将是Object
在这种情况下。此外,在这个角色中,列表是一个提供者...)
关于java - 通配符 java 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990134/