黑马程序员技术交流社区
标题:
一个类里的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