编程语言
首页 > 编程语言> > java – 继承和列表

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