黑马程序员技术交流社区

标题: 一个类里的class属性是怎么来的? [打印本页]

作者: 车风波    时间: 2012-6-28 18:01
标题: 一个类里的class属性是怎么来的?
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()来判断属性的,不知道对不对?
作者: 王硕'    时间: 2012-6-28 18:42
在网吧,没法测试。。 我记得以前也遇到类似问题,
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党无力中,上面有错误的请无视


作者: 王健    时间: 2012-6-29 00:53
class是由JVM编译过来让java中能够识别的
作者: 黄克帅    时间: 2012-6-29 11:30
每个类  在内存中都对应着一份字节码。这个字节码用对象来描述就是Class对象。通过类名.class ,对象名.getClass(),Class.forName(“路径”)3种方法来获得。
BeanInfo.getPropertyDescriptors(),本来就是获得bean信息,你没有setXXX getXXX isXXX  都不算bean  怎么能获得它的信息





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2