<分区>
我有一些使用 reflection
的代码,我想用它来调用 setter
方法。下面是我的代码:
Method getObjectMethod = entityClass.getMethod(GET_METHOD_NAME);
if (getObjectMethod != null){
Object p = getObjectMethod.invoke(obj);
Class<?> pClass = p.getClass();
Method setMethod = null;
Method[] methodList = pClass.getDeclaredMethods();
for (Method met: methodList){
if (met.getName().equals(SET_METHOD_NAME)) {
setVersionMethod = met;
break;
}
}
if (setMethod != null){
setMethod.invoke(p, "UPDATED BY REFLECTION5");
}
这很好用。但是,当我尝试将循环替换为:
setMethod = pClass.getDeclaredMethod(SET_METHOD_NAME);
或
setMethod = pClass.getMethod(SET_METHOD_NAME);
我得到一个 NoSuchMethodException。
知道为什么吗?