黑马程序员技术交流社区

标题: 请教一个成员变量反射的问题 [打印本页]

作者: —__    时间: 2012-5-9 07:56
标题: 请教一个成员变量反射的问题
视频中老师讲到一下的代码
ReflectPoint pt1 = new ReflectPoint (3,5);
Field fieldY = pt1.getClass().getField("y");
System.out.println(fieldY.get(pt1));

打印结果自然不用说 Y 的值是五,
其中视频讲解到 fieldY 是类上的变量 而不是对象身上的变量,也就是说可以代表是pt1 也可以代表是pt2 ;
但是大家有没有想过这样一个问题呢?

那么假设有这样一段代码
ReflectPoint pt2 = new ReflectPoint (3,5);

那么要打印pt2 中y的值该如何打印呢?
是直接
System.out.println(fieldY.get(pt2)); 呢?
还是重写
Field fieldY = pt2.getClass().getField("y");
在打印呢?
如果是前者那么能否打印出来呢?
如果是后者那是不是说 filldy 必须要重新指向目标呢?如果重新指向目标是不是就代表fieldY 是面向对象的,是对象身上的变量呢?这样的话是不是跟老师说的话有冲突呢?



作者: 赵玮_Tom    时间: 2012-5-9 08:45
直接写System.out.println(fieldY.get(pt2)); fieldY对应的是类,而不是对象。
作者: 韩慧阳    时间: 2012-5-9 08:51
一个类被创建了对象后就意味着这个类被实例话了。
用大白话说,我们比如有一个汽车类,这个类有汽车的各种特征。那么我们创建一个对象实例化这个类,比如 汽车 标志牌=new 汽车;
那么标志汽车我们是不是可以让他是标志408也可以让它是标志207呀。所以,直接打印嘛。
不知道这样说你能不能理解。也可能是我理解的不对哈。 早上刚起来,脑袋里一个代码没有,真心想不出什么好的例子出来。  
作者: —__    时间: 2012-5-9 10:04
懂了 很感谢




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