我用XmlPullParser解析XML,定义了一个Student类,类成员对应xml中的标签,我用反射获取Studen类中的所有字段,并为每个字段set值为xml中的Parser.nextText()的值
Field[] fields = student.getClass().getDeclaredFields(); for (Field field : fields) { fieldName=field.getName(); if (fieldName.equals(parser.getName())) { System.out.print("tag:"+fieldName+" 值:"+parser.nextText()); //这里可以正常获取值 String setXXX="set"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1); Method method = student.getClass().getDeclaredMethod(setXXX,String.class); method.invoke(student, new Object[]{parser.nextText()});//这里就出错了
}
这个方法可行吗?有更好的办法吗?
行不行试试不就知道了么######方法可行!哈哈!实例话Student的位置错了,这段代码没有问题!###### 把这个加上试下
boolean accessible = field.isAccessible();
field.setAccessible(true);
//set值
field.setAccessible(accessible);
###### 如果是对标准的JavaBean进行反射操作,建议使此类
java.beans.Introspector.getBeanInfo(Class<?> clazz);
######哦,谢谢,新知识啊
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。