【发布时间】:2018-07-15 21:55:15
【问题描述】:
我已经创建了一个类似这种语法的数组列表:
List<?> obj = new ArrayList<Object>();
如果我尝试添加一个新对象或任何对象,如字符串。它给了我编译错误:
obj.add(new Object());
The method add(capture#1-of ?) in the type List<capture#1-of ?> is not applicable for the arguments (Object)
obj可以添加哪些对象?
【问题讨论】:
-
List<?>是一个list of unknown type,除了null,你不能添加任何东西。 -
您不能使用
?添加任何内容。记住 PECS What is PECS (Producer Extends Consumer Super)?. -
另请参阅Difference between <? super T> and <? extends T> in Java 以获得对通配符的深入解释。
-
你想避免
String的重复吗?好的,使用菱形运算符。