簡體   English   中英

無法通過反射調用非靜態方法(Java)

[英]Trouble invoking a non-static method through reflection (Java)

我在通過反射調用非靜態方法時遇到問題。 我的代碼如下。 當我嘗試“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
}

如果方法不是靜態的,則需要該類的實例。

看看這個例子

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM