java反射:object is not an instance of declaring class


/**
* <pre>
* <h3>通過反射執行某個方法,並將數據集放入cache中</h3>
* </pre>
*
* 方法實現呆完成
*
* @param key
* 緩存key
* @param _class
* 類名
* @param methodName
* 類方法名
* @param paramType
* 方法參數類型
* @param args
* 方法參數值
*/
public void reflect(String key, Class<T> _class, String methodName,
Class<Object>[] paramType, Object... args) {
try {
// cache判斷
// 如果cache中沒有這個值,則調用方法填充cache
Method method = _class.getMethod(methodName, paramType);
method.invoke(_class, args);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}


執行到:

method.invoke(_class, args);

報錯:
object is not an instance of declaring class
說明Class沒有實例化;
解決辦法:
由於沒有實力化可以有如下兩種方法:
1、反射方法定義成爲static的,故被反射類就不需要實例化;
2、method.invoke(_class.newInstance(), args);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章