java 泛型转换问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:29:57
我有一个类A实现了接口B
我定义了ArrayList<A> as = new ArrayList<A>();
ArrayList<B> bs = new ArrayList<B>();
我想把as转成bs,要怎么转啊?
直接bs = as;不行,难道要把里面的数据一个个转添加到bs中吗?

不能直接转,bs = as;如果这个能转的话证明bs和as的类型一致,或者它们两个直接有继承关系,但是ArrayList<A>与ArrayList<B>之间并不存在类型一致或者继承的关系,所以不能直接转换。只能通过其他方法实现

clone

类型都不一致,怎么转?!

static void copyListData(ArrayList<A> as, ArrayList<B> bs) {
bs.clear();
for (int i = 0; i < as.size(); i++) {
if(as.get(i) instanceof B){
bs.add(as.get(i));
}
}
}
或者你ArrayList<B> as = new ArrayList<B>();直接这样写。