【发布时间】:2022-02-26 23:02:01
【问题描述】:
鉴于Manager extends Employee
当我尝试将 Employee 添加到经理的 ArrayList 时,我很惊讶地发现编译器错误,
ArrayList<? super Manager> sonsOfEmployee = new ArrayList<>();
sonsOfEmployee.add(new Employee("Manager",100000));
我得到错误
Required type: capture of ? super Manager
【问题讨论】:
-
ArrayList<? super Manager> sonsOfEmployee = new ArrayList<Manager>();编译。如果Manger是Employee的子类型,那么您不能将Employee添加到List<Manager>是有道理的,不是吗? -
@LouisWasserman 请仔细看问题。它不是 List
-
我确实仔细看了这个问题。就 Java 而言,
ArrayList<? super Manager>可能是ArrayList<Manager>,这就是它不允许此分配的原因。 -
@LouisWasserman 那么为什么我们不能在
ArrayList<Manager>中添加Employee?毕竟它符合我们设定的规则:? super Manager是允许的。 -
欢迎您提出有关这些的问题,但是我在上一条评论中给出的代码示例是这不起作用的原因。
标签: java