import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor; public class BeanInfoTest { public int getA(){ return 1; } public static void main(String[] args) { try { BeanInfo bi =Introspector.getBeanInfo(BeanInfoTest.class, Object.class); PropertyDescriptor pd[] = bi.getPropertyDescriptors(); for(PropertyDescriptor prodes:pd){ System.out.println(prodes.getName()); System.out.println(prodes.getReadMethod()); System.out.println(prodes.getWriteMethod()); } } catch (IntrospectionException e) { e.printStackTrace(); } }} 附件是结果,它竟然帮我找到了property a。我比较好奇的问题是,我明明没有定义a这个字段的。难道反射的时候都是通过找到getXX setXX方法来判断是不是有这个属性吗?感觉这也太不合适了。还是说这样只是为了让所有权在我们手上,让我们使用规范的bean。提供完整的set get方法和字段?还望知道的人告知一二,
4 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
class A{
private int a; //这是字段名
public void setAbc( a) {
this.a = a;
}
public int getAbc() {
return this.a;
}
}
abc就是你的属性名 prodes.getName() 拿的是属性名
要区别开字段名 和 属性名
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
bean代表一个数据对象,你的测试bean写的就已经不是规范的。
还是说这样只是为了让所有权在我们手上,让我们使用规范的bean。提供完整的set get方法和字段?----这里不一定非要有一对get set方法。可以只有get,但不能只有set,既然用到bean又不符合mvf思想那又有什么意义呢?
添加回答
举报
0/150
提交
取消