我有一个关于将子类列表分配给父类(super class)列表的基本问题。
所以我有如下内容:
Class B extends A;
List <B> bList = new ArrayList<B>();
List <A> aList = bList;
为什么最后一次分配失败?抱歉新手问题
最佳答案
为了解释这一点,让我用整数代替“B”,用数字代替“A”。这只是为了让它更容易解释。
Class Integer extends Number;
List <Integer> iList = new ArrayList<Integer>();
List <Number> nList = iList // will fail
这会失败的原因是因为 nList 可以采用任何数字——它可以采用 Integer,它可以采用 Double,或者就此而言,Number 的任何子类。然而,这对 iList 来说并非如此。您不能将 Double 添加到 iList,因为它只接受 Integer 及其子类。希望这有助于向您解释。
关于Java泛型——将子类列表分配给父类(super class)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260841/