有
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
由其他路由在运行时构建的,并且该部分代码具有List<IData>
从aList
问题是如果List<? extends IData> aList
is 指向ArrayList<ChildClassA>()
or 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