好的,标题有点含糊,假设下面的结构,一个示例可以更好地说明我的意思:

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();
    }
}


该代码已大大简化,ABC类显然实现了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/

10-10 22:34