我定义了以下类和接口:
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>
。无论如何,它将指向相同的引用。