好的,标题有点含糊,假设下面的结构,一个示例可以更好地说明我的意思:
interface I {
methodCall();
}
class A implements I {
}
class B implements I {
}
class C implements I {
}
class Main {
private A a;
private B b;
private C c;
//other interesting stuff
void doSomeMainMethod() {
a.methodCall();
b.methodCall();
c.methodCall();
}
}
该代码已大大简化,
A
,B
和C
类显然实现了methodCall()
,但是无需在代码中显式地表明这一点。我想问的是以下内容:
有没有办法告诉Java生成我的
doSomeMainMethod
方法?我想告诉Java在类methodCall()
中的所有类型为I
的对象上调用Main
。最好不要使用反射,因为我认为使用反射是可能的,或者如果需要反射,是否有办法将其包裹起来,使其至少看起来像是没有黑漆的?当然,它也需要安全(尽可能安全)。
最佳答案
class Main {
private A a;
private B b;
private C c;
private I[] instances = new I[]{a, b, c};
//other interesting stuff
void doSomeMainMethod() {
for(I instance : instances) {
instance.methodCall();
}
}
关于java - 对特定类型的所有对象的Java调用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21349994/