泛型如何在java中用接口重写方法
我有一个接口I,两个类A&;实现它的B和一个泛型类型为接口I的列表,因此它可以包含类型a和类型a的两个对象;B
class A implements I
class B implements I
List<I> myList
我想(在一个单独的类中)编写两个方法process(a)和process(B),这样我就可以在列表中循环,并为每个元素调用process(I)和java将自动(unbox?)对象并调用正确的方法
class D{
processList(){
for( I i : myList ){
process( i ); // invoke either process(A) or process(B) based on instanceof
}
}
public void process(A a){...}
public void process(B b){...}
}
我知道我可以通过在列表中的每个元素上调用'instanceof'来实现这一点,如果有其他方法可以调用不同的方法,但肯定有更好的方法
在MVC场景中,类a和B在模型中,而类D在控制器中,因此需要分离
有人能帮忙吗
# 1 楼答案
有。将方法process()添加到接口
I
。然后,您可以在迭代List<I>
的同时对这些项调用process
显然
A
和B
必须提供process()
的具体实现