java - 添加到通用列表<?> 产生编译错误

标签 java generics compiler-errors

以下应用程序在 (*) 行中产生编译错误

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 (它与原始 ListList<Object> 不同)。

这意味着:a List 特定但未知的类型。因为类型未知,所以您无法向列表中添加任何内容 - 编译器不知道列表中对象的确切类型应该是什么,因此它无法检查您是否不尝试将某些内容放入列表中不应该被允许,因此它不允许您向列表中添加任何内容。

关于java - 添加到通用列表<?> 产生编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889218/

相关文章:

java - DAO 在数据库中创建记录时崩溃 - Spring Boot

java - 应该兼容的不兼容通配符类型

java - 安卓/Java : Check if arraylist is empty and then launch another activity

c# - 创建 C# 泛型类的实例

c# - 从泛型方法返回 IQueryable<T>

java - DrJava和使用LocalDateTime的错误

c - c 中的 null 类型和编译器错误

java - 在其他类中访问主类中的公共(public)变量

java - 雅 cocoa .计算测试套件中每个测试用例的覆盖率信息

c# - 具有子泛型类型的泛型工厂方法