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
有人可以請向我解釋爲什麼這會導致運行時異常?在我看來,我正在訪問類型變量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
您應該無法成功編譯您的代碼。你應該在這條線得到一個編譯器錯誤:
List<A> aL = bL;
因爲List<Subclass>
不是List<Superclass>
。這是因爲你剛纔的嘗試而被禁止的 - 將超類實例插入到子類實例列表中。