以下应用程序在 (*) 行中产生编译错误
ArrayList<?> l = new ArrayList<>();
l.add(new Integer(1));
编译错误说:
error: no suitable method found for add(C<CAP#1>)
l.add(o);
这是为什么呢?我认为 List 应该接受任何内容
最佳答案
你误解了什么List<?>
意思是。
它不的意思是:a List
任何类型的对象,这样您应该能够将任何内容添加到 List
(它与原始 List
或 List<Object>
不同)。
这意味着:a List
特定但未知的类型。因为类型未知,所以您无法向列表中添加任何内容 - 编译器不知道列表中对象的确切类型应该是什么,因此它无法检查您是否不尝试将某些内容放入列表中不应该被允许,因此它不允许您向列表中添加任何内容。
关于java - 添加到通用列表<?> 产生编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889218/