【发布时间】:2009-12-03 04:17:17
【问题描述】:
我有一些具有相同接口类型的不同对象的数组列表,例如:
Interface interface {}
class A implements interface {}
class B implements interface {}
我还有一个实现接口所有继承对象的重载方法:
public void doSomething(A obj) {}
public void doSomething(B obj) {}
编译器还强迫我用接口写一个重载方法:
public void doSomething(interface obj) {}
然后我遍历列表的值并调用方法:
for (interface obj: myList) {
doSomething(obj);
}
现在由于 obj 的类型是“接口”,所以调用 doSomething(interface obj) 而不是说 doSomething(B obj),以防 obj 实际上属于 B 类型。
我可以让java做其他事情吗,所以当obj是A类型时它调用doSomething(A obj),当obj是B类型时它调用doSomething(B obj)?
【问题讨论】:
-
doSomething() 方法在哪个类中实现?他们是 A、B 还是其他类别的成员。
-
它们在为 A 和 B 创建适配器/包装器对象的工厂类中实现。