我定义了以下类和接口:

public interface A {
}

public class B implements A {
}
我有一个ListB对象,需要转换为ListA对象:
List<B> listB = new List<B>();
listB.add(new B());  // dummy data
listB.add(new B());  // dummy data
listB.add(new B()); // dummy data

List<A> listA = (List<A>) listB;
上面的最后一行导致编译错误“无法从List 强制转换为List ”。我尝试通过以下方法解决此问题:
List<A> listA = Arrays.asList((A[]) listB.toArray());
不幸的是,这引发了ClassCastException。有谁知道我该如何解决?

最佳答案

您不能像那样抛弃它。创建一个新的:

List<A> listA = new ArrayList<A>(listB);
构造函数采用Collection<? extends A>。无论如何,它将指向相同的引用。

10-06 09:31