如何借助ElementsOfTheBank类使用addAll()添加不同类型集合元素?
解决方案
要实现老师的要求,你需要让Person和Accounts类都继承自ElementsOfTheBank类,这样它们就能被统一放到泛型为ElementsOfTheBank的列表中。具体步骤如下:
创建ElementsOfTheBank父类
这个类可以是一个基础类,如果不需要额外逻辑,甚至可以是空类;也可以添加银行元素的通用属性或方法,比如统一的ID、通用toString方法等:public class ElementsOfTheBank { // 示例通用方法,可根据需求调整 @Override public String toString() { return getClass().getSimpleName(); } }修改Person和Accounts类,继承ElementsOfTheBank
调整两个类的定义,加上继承关系,原类的属性和方法无需改动:public class Person extends ElementsOfTheBank { // 原Person类的属性和方法 private String name; // ... 其他原有代码 } public class Accounts extends ElementsOfTheBank { // 原Accounts类的属性和方法 private String accountNumber; // ... 其他原有代码 }替换泛型为ElementsOfTheBank
现在就可以把原代码中的???替换成ElementsOfTheBank,顺利调用addAll()方法:List<Person> persons = new LinkedList<Person>(); List<Accounts> accounts = new LinkedList<Accounts>(); List<ElementsOfTheBank> elements = new LinkedList<>(); elements.addAll(persons); elements.addAll(accounts);
原理说明
Java中,List<父类>可以接收所有子类类型的集合,因为addAll()方法支持传入Collection<? extends E>类型的参数(这里E是ElementsOfTheBank),所以List<Person>和List<Accounts>作为子类集合,能被正常添加到List<ElementsOfTheBank>中。
内容的提问来源于stack exchange,提问作者FranS
相关产品推荐
相关产品推荐

