0

クラスのメソッドを呼び出すためにリフレクターを使用する、私が書いていない Java コードがあり、変更できません。このようなもの(コードは見ていません):

    ....
    params[0] = Something;
    ....
    Class c = Class.forName(Name);
    Method m = c.getDeclaredMethod(MethodName, pt);
    if (Modifier.isStatic(m.getModifiers()))
    {
        res = m.invoke(null, params);
    }
    else
    {
        obj = c.newInstance();
        res = m.invoke(obj, params);
    }
    ....

ここまでは順調ですね。

クラスの名前、メソッドの名前、およびパラメーターを制御します。これらの任意の組み合わせを送信できますが、キャッチがあります。最初のパラメーターはハードコードされているため、送信するパラメーターはすべて params 配列に追加されます。したがって、メソッドはそのパラメーターを受け入れる必要があります。

私の質問は、タイプを作成してそこで使用する方法はありますか? このようなもの:

    public class PrintWrapper {
        public static void println(Somethingtype Something, String arg) {
            System.out.println(arg);
        }
    }

それをクラス名として使用しようとしましたが、うまくいきませんでした。ある種の匿名クラスか何かが必要です。

いいえ、ソース コードを変更したり、システムにクラスを追加したりすることはできません。私が制御するのは、クラスの名前、メソッドの名前、および残りのパラメーターだけです。

4

1 に答える 1

0

私が制御するのは、クラスの名前、メソッドの名前、および残りのパラメーターだけです。

答えは次のとおりです。

タイプを作成してそこで使用する方法はありませんか?

于 2013-05-02T13:32:44.837 に答える