Java 继承及;列表

Java 继承及;列表,java,generics,covariance,Java,Generics,Covariance,B类扩展了A类。我有一个B列表(list list1),但是对于某些操作,我只需要a类字段,但是list list2=list1不起作用。如何解决这个问题?泛型是类型严格的,它们不支持数组等共变量类型。您的问题不清楚。请再解释一下如果B扩展a您可以通过B的实例访问a的公共字段,而无需执行任何操作。你能更具体一点,然后发布一个你正在尝试做的简短的例子吗?@现在,您要在该列表上执行doSomething List<? extends A> list2 = list1; List<

B类扩展了A类
。我有一个B列表(
list list1)
,但是对于某些操作,我只需要a类字段,但是
list list2=list1
不起作用。如何解决这个问题?

泛型是类型严格的,它们不支持数组等共变量类型。

您的问题不清楚。请再解释一下如果
B
扩展
a
您可以通过
B
的实例访问
a
的公共字段,而无需执行任何操作。你能更具体一点,然后发布一个你正在尝试做的简短的例子吗?@现在,您要在该列表上执行
doSomething
List<? extends A> list2 = list1;
List<B> list1 = ..;
List<A> list2 = list1;
list2.add(new C());
for (B b : list1) {
    //ClassCastException - cannot cast from C to B
}