泛型运行时异常

时间:2013-06-20 20:26:09

标签: java generics runtime-error runtimeexception

有人可以向我解释为什么会导致运行时异常吗?在我看来,我正在访问类型变量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

1 个答案:

答案 0 :(得分:2)

您应该无法成功编译代码。您应该在此行收到编译器错误:

List<A> aL = bL;

因为List<Subclass>不是List<Superclass>。由于您刚刚尝试的内容,因此不允许这样做 - 将超类实例插入子类实例列表中。