0

有人可以向我解释为什么这会导致运行时异常吗?在我看来,我正在访问类型变量 B 的数组列表。

class A {}
class B extends A {}
List<B> bL = new ArrayList<B>();
List<A> aL = bL;
aL.add(new A());
B b = bL.get(0); // runtime exception
4

1 回答 1

2

您不应该能够成功编译您的代码。您应该在此行收到编译器错误:

List<A> aL = bL;

因为 aList<Subclass>不是 a List<Superclass>。这是不允许的,因为您刚刚尝试过 - 将超类实例插入子类实例列表。

于 2013-06-20T20:28:43.817 回答