1

リフレクションによる非静的メソッドの呼び出しに問題があります。私のコードは以下です。「ClassnameRemoved.printMessageToLogger(Level.INFO, "Test");」を実行しようとすると、「クラス Logger でメソッド 'log' が見つかりませんでした。これは通常の Java クラスなので、おそらく変更された / outdata Java バージョン。". 前もって感謝します!

private static void printMessageToLogger(Level lvl, String message) {
    try{
        Class<?> clazz = Class.forName("net.packgeName.omitted.Main");
        Field logger = clazz.getDeclaredField("tcLog");
        Method logMethod = logger.getDeclaringClass().getDeclaredMethod("log", Level.class, String.class);
        logMethod.invoke(logger, lvl, message);
    }
    // catch methods omitted to save space
}
4

1 に答える 1

4

メソッドが静的でない場合は、クラスのインスタンスが必要です。

この例を見てください:

Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();
于 2013-04-03T20:57:26.667 に答える