Java泛型——将子类列表分配给父类(super class)列表

标签 java generics

我有一个关于将子类列表分配给父类(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/

相关文章:

java - 如何在某个类中使用另一个类的方法?

java - WordUtils.capitalize 的替代品?

java - java中如何访问其他类方法中的变量

swift - 带有 Void 的通用类型别名在 Swift 4 中给出了缺少参数的错误

java - 如何在不创建文件的情况下创建临时文件名

java - 警告 : [options] bootstrap class path not set in conjunction with -source 1. 5

java - 如何使用泛型实现类型安全?

c# - 使用未知数量的未知类型 - .NET

generics - 未实现特征时返回泛型

java - List<Object[]> 和 List<Object> 之间有什么区别?