java - 为什么我不能将 Object 类型的对象添加到 List<?> 中?

标签 java generics

据我了解 List<?>定义为某些特定但未知类型的列表。那么无论这个 List 的参数类型是什么,它应该扩展 Object因为在 Java 中你不能拥有任何不扩展 Object 的类型。那么为什么下面的代码没有被编译呢?它是如何违反 listObj 的不变量的?

    List<?> listObj = returnSomeList();
    listObj.add(new Object()); //Why does this not work ?

最佳答案

List<?> listObj可以指向可以存储不同类型对象的任何类型的List。

您认为,让它添加任何对象是否安全,例如

List<?> listObj = new ArrayList<String>();
listObj.add(new Object());

关于java - 为什么我不能将 Object 类型的对象添加到 List<?> 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045034/

相关文章:

java - 名称以前未按照 JSP.5.3 引入

java - 通过 Socket 连接发送一个 String[] 数组

JAVA servlet 获取数据库返回结果给客户端

java - Pig UDF 找不到 WritableComparable

swift - 存储通用类型的项目

c# - 具有父类(super class)的泛型类

swift - 为什么它不能转换类型的返回表达式?

Java 泛型和数字类型

java - 发生错误时重试

c# - 几个函数的通用替换