java – 继承和列表
作者:互联网
B类扩展了A类.我有B的列表(List< B> list1),但是对于某些操作,我只需要A类字段,但List< A> list2 = list1不起作用.怎样才能解决这个问题?
解决方法:
List<? extends A> list2 = list1;
这意味着“A的特定子类型的列表”.
如果你可以使用List< A>,这意味着“一个A的所有子类的列表”,你将失去编译时的安全性.想像:
List<B> list1 = ..;
List<A> list2 = list1;
list2.add(new C());
for (B b : list1) {
//ClassCastException - cannot cast from C to B
}
标签:java,generics,covariance 来源: https://codeday.me/bug/20190730/1578366.html