在通过反射调用非静态方法时遇到麻烦(Java)



我在通过反射调用非静态方法时遇到问题。我的代码如下。当我尝试做"classnamemoved . printmessagetologger(级别。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
}

如果方法不是静态的,则需要一个类的实例。

看这个例子:

Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();

相关内容

  • 没有找到相关文章