java - 集合泛型无法添加定义类型的对象

标签 java generics

我创建了 2 个对象:PersonMen(扩展 Person)。然后,我创建了一个通用集合来仅添加 Men 对象,但由于某种原因,它不允许我添加 Men 对象。

class Person{

}

class Men extends Person{

}

public class test extends HashSet<Person>{

    public static void main(String[] args) {

        List<? extends Person> p1 = new ArrayList<Men>();
        p1.add(new Men());

    }

}

最佳答案

List<? extends Person>表示“扩展 List 的某种具体类型的 Person ,但我们不知道该具体类型实际上是什么”。据我们所知,它可能是 List<Women> !因此,您实际上无法向此列表添加任何内容( null 除外)。您可能想要:

List<Men> p1 = new ArrayList<Men>();  // a list of only Men instances

另请参阅:Wildcards

关于java - 集合泛型无法添加定义类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161485/

相关文章:

c# - 在 C# 中,我可以编写一个通用函数来返回 null 或将值作为字符串返回吗?

java - 递归替换为 Java 正则表达式?

java - 警告 : No mapping found for HTTP request with URI[] in DispatcherServlet with name []

java - Cloudera 向导步骤 "Install Agent"期间的 SSH 问题

java - 为什么编译器不强制扩展接口(interface)的泛型的返回类型值?

C# 泛型 : default non-null value for member

java - 曲面 View 不起作用

java - Java 中的 CSV 到表

java - 通配符,添加到列表会抛出 UnsupportedOperationException

c# - 协变/逆变 : how to make the following code compile