2

パラメータInterfaceを持つメソッド(リフレクションを使用)を呼び出したいと思います-つまり、リストですが、リストの実装があります。例えば:

public class Test {

    public static void main(String[] args) throws NoSuchMethodException {
        Method method = Test1.class.getMethod("method", new Class[]{ArrayList.class});

    }

    public class Test1 {

        public void method(List list) {
            System.out.println("method");
        }
    }
}

私は得るNoSuchMethodException。この場合、取得するパラメーターはわかっていますが、問題は、パラメーターの種類を「静的に」知らないときに、これを一般的に使用したいということです。

getMethod がパラメータとしてインターフェイスを持つメソッドも返す可能性はありますか? または、独自の「methodsearcher」を作成する必要があります

ありがとうございました。

編集: それははるかに複雑です。プログラムで「動的モジュラー アーキテクチャ」のようなものを書こうとしています。他のモジュールと通信するコアがあります。だから私はプログラミング時ではなく実行時にparamsクラスを知りません。

 public Object processMessage(String target, String methodName, List<Object> params, Object returnNonExist) {
    Module m = modules.get(target);
    if (m == null) {
        return returnNonExist;
    } else {
        Class[] paramsTypes = new Class[params.size()];
        for (int i = 0; i < params.size(); i++) {
            paramsTypes[i] = params.get(i).getClass();
            }
        }
        try {
            Method method = m.getClass().getMethod(methodName, paramsTypes);
            Object result = method.invoke(m, params.toArray());
            return result;
        }

それは良いですか?

4

3 に答える 3