[英]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.