A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 车风波 中级黑马   /  2012-6-28 18:01  /  2352 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

BeanInfo beanInfo = Introspector.getBeanInfo(String.class);//任意一个类
  PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
  for (int i = 0; i < pds.length; i++) {
   String name = pds[i].getName();
   System.out.println(name); //都有class这个属性
  }
所以我猜测是Object类有这个属性,查源码发现没有class属性,只有getClass()方法,
然后我又自己写了一个getX(),但没有x这个成员变量,输出结果也有x。所以我觉得这个BeanInfo.getPropertyDescriptors()
是根据方法名getXxx(),isXxx(),setXxx()来判断属性的,不知道对不对?

3 个回复

倒序浏览
在网吧,没法测试。。 我记得以前也遇到类似问题,
for (int i = 0; i < pds.length; i++) {
   System.out.println(pds[i].getReadMethod());
   System.out.println(pds[i].getWriteMethod());
}
好像只能得到getClass。   
按这个结果,Object中有class属性也很正常,私有不就行。
你用反射 Object.class.getDeclaredField("class").getName()看下是不是null  
手key党无力中,上面有错误的请无视

回复 使用道具 举报
class是由JVM编译过来让java中能够识别的
回复 使用道具 举报
每个类  在内存中都对应着一份字节码。这个字节码用对象来描述就是Class对象。通过类名.class ,对象名.getClass(),Class.forName(“路径”)3种方法来获得。
BeanInfo.getPropertyDescriptors(),本来就是获得bean信息,你没有setXXX getXXX isXXX  都不算bean  怎么能获得它的信息
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马