请分享您的想法以解决以下问题陈述。
目标: 我正在尝试使用反射在Java 1.6中开发一个实用程序。此实用程序将访问每个属性,非可空属性将通过特定的验证例程传递。
问题陈述: 我能够访问类ParentBean,ClassB和ClassC的属性。但是我无法访问ClassD,ClassE的属性。我的代码就在这里。
{{1}}
答案 0 :(得分:0)
try {
StringBuffer fieldName1 = getFieldName(field2);
m = field.getType().getMethod(fieldName1.toString(),
new Class < ? > []{});
//at this point m is overwritten
try {
String invokingClass = field.getType().getName();
// Below line throws error: java.lang.IllegalArgumentException: object is not an instance of declaring class
Object formObj2 = m.invoke(formObj, null);
} catch (NullPointerException npe) {
npe.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
你的代码中有一点覆盖方法m,m成为对象formObj(chldFormObj)中的字段的方法,稍后你得到错误,因为你试图从chldFormObj上调用一个方法fromObj。
您应该在对象chldFormObj上调用该方法。