Java 集合泛型 <?扩展 Employee> 抛出异常

标签 java generics collections

我写了下面的代码

class Student {}
class Student1 extends Student {}
class Student2 extends Student {}
List<? extends Student> emp = new ArrayList<>();
emp.add(new Student()); // I do not want this to happen. at compile time it should give me error
emp.add(new Student1()); // this should happen
emp.add(new Student2()); // this should happen

但是在上面的代码中它不起作用,在所有 3 个添加中抛出编译错误。

有什么指点吗?

最佳答案

不,Java 中没有这样的选项可以将类型参数限制为给定类型的子类型。看起来您已经理解了语法 ? extends Type 的含义有点太字面意思了。 Type通配符有上限,并且该范围始终包含在内。

如果您的想法确实有效,那么就不会有任何类型可以用来引用列表中的一般项目:最窄的此类类型是 Student .

关于Java 集合泛型 <?扩展 Employee> 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20868802/

相关文章:

c# - 为什么这个类型转换不起作用?

java - Java 的 Collections.sort(list, compare) 的排序顺序是什么?从小到大还是从大到小?

javascript - 多种分类的 Backbone.js 集合

java - 使用 java 以编程方式与 gdb 交互

Java Map 按值排序

c# - 使用泛型处理可空类型与不可空类型

java - 如何在泛型的使用中允许更精确的返回类型?

java - 在 Java 中确定图像的 DPI

java - Sonarcloud 未被授权使用 Travis CI 和 Maven

scala - 如何使用对象类型参数化类以在 Scala 中获取它的实例?