Java反射如何调用getter/setter方法?
我试图调用对象中某个属性的set方法,我的代码如下:
String[] fieldsStringName = (((CacheObject)currentObject).getFieldsToString(false)).split(", ");
String methodName = "";
for (int i = 0; i < objectInputArr.length; i++) {
methodName = "set" + fieldsStringName[i];
Method methodSetProperty = currentObject.getClass().getMethod(methodName); <<----error occurs here
methodSetProperty.invoke(currentObject, objectInputArr[i]);
}
我得到的错误是:
Exception in thread "main" java.lang.NoSuchMethodException: model.Book.setPagesAmount()
at java.lang.Class.getMethod(Unknown Source)
at CahceSystem.createNewObject(CahceSystem.java:84)
at CahceSystem.main(CahceSystem.java:50)
请求的setter方法在类及其超类(仅继承属性)中编写得很好,我的setter方法如下:
public void setPagesAmount(int pagesAmount) {
this.pagesAmount = pagesAmount;
}
如何解决这个问题有什么建议吗
# 1 楼答案
由于方法可以重载,因此仅方法的名称不足以查找该方法。您还需要提供参数的类型(setter通常不是no-arg方法)
试试像这样的东西
# 2 楼答案
请尝试上面的代码片段。工作正常