我有一个类似ChildData1
的课程,从Data
延伸。
如何将List<List<ChildData1>>
转换为List<List<Data>>
?
答案 0 :(得分:0)
遍历列表元素和TYPECAST
它。
答案 1 :(得分:0)
想象一下,如果你能做到这一点:
List<List<ChildData1>> foo = getListOfListOfChildData();
List<List<Data>> bar = foo; // there's your cast
ChildData2 childData2 = getSomeOtherChildData();
bar.get(0).add(childData2); // now you've added ChildData2
for (ChildData1 childData1 : foo.get(0)) {
// Whoops! Suddenly you've got a ChildData2 in your ChildData1.
}
这些类型不是自然兼容的,如果没有某种@SuppressWarnings
,就不容易相互转换。
答案 2 :(得分:0)
根据泛型规则,您可以在没有强制转换的情况下执行以下任务:
List<List<ChildData>> subClassList = ...
List<? extends List<? extends Data>> superClassList = subClassList;
答案 3 :(得分:-1)
如果Data是父级,则无需明确地对其进行类型转换。
List<List<Data>>> data = somemethod();
List<List<ChildData>>> somemethod(){};