传递方法参数后转换ArrayList

时间:2015-05-19 16:40:11

标签: java arraylist

我有两个ArrayLists,一个是ArrayList<A>,另一个是ArrayList<B>。 我有一个大约95%相同的方法,所以我想在两种情况下都使用它,而不必为不同的参数编写两种不同的方法。

我可以使用以下内容吗?

public void method( ArrayList<?> list){
    if( getListClass == A )
         cast list to ArrayList<A>;
    else
         cast list to ArrayList<B>;
}

提前致谢!

1 个答案:

答案 0 :(得分:2)

泛型是一个编译时功能。这意味着在运行时进行转换并不意味着任何事情。我建议你对List<CommonAB>处理CommonAB是A和B共有的接口。

你能做的是

updateListA(List<A> list) {
    commonCode(list);
    specificCodeForA(list);
}

updateListB(List<B> list) {
    commonCode(list);
    specificCodeForB(list);
}

注意:您无法在列表中获取泛型的类型,因为类型在运行时是ArrayList,而不是ArrayList<A>ArrayList<B>