我定义了以下类和接口(interface):
public interface A {
}
public class B implements A {
}
我有一个 List
的 B
对象,我需要将其转换为 List
的 A
对象:
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>
.无论如何它都会指向相同的引用。
关于Java:当 B 实现 A 时从 List<B> 转换为 List<A>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56989313/