有人可以向我解释为什么会导致运行时异常吗?在我看来,我正在访问类型变量B的arraylist。
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
答案 0 :(得分:2)
您应该无法成功编译代码。您应该在此行收到编译器错误:
List<A> aL = bL;
因为List<Subclass>
不是List<Superclass>
。由于您刚刚尝试的内容,因此不允许这样做 - 将超类实例插入子类实例列表中。