【发布时间】:2018-05-23 19:20:35
【问题描述】:
拥有
class BaseClass implements IData ();
class ChildClassA() extends BaseClass;
class ChildClassB() extends BaseClass;
因为做不到
List<BaseClass> aList = new ArrayList<ChildClassA>()
所以有一个
List<? extends IData> aList
for pointint to either
ArrayList<ChildClassA>(),
or
ArrayList<ChildClassB>()
aList 是由其他路由在运行时构建的,并且该部分代码具有从aList 中获取List<IData> 的功能
问题是List<? extends IData> aList 是指向ArrayList<ChildClassA>() 还是ArrayList<ChildClassB>(),
可以ListData<IData> outputList = (List<IData>) aList吗?如下所示:
(似乎它正在工作,但不确定除了强制转换之外是否有更好的方法来分配泛型数组。)
编辑:List<IData> outputList 的输出仅供只读使用(不可变),没有插入/删除,它只会迭代 IData 以对 IData 的真正含义做出反应。
List<? extends IData> aList = new ArrayList<ChildClassA>();
ListData<IData> outputList = (List<IData>)aList
List<? extends IData> aList = new ArrayList<ChildClassB>();
ListData<IData> outputList = (List<IData>)aList
【问题讨论】:
标签: java generics list-template