我有两个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>;
}
提前致谢!
答案 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>