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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 恩恩 中级黑马   /  2013-12-25 12:32  /  1357 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学习Field反射的时候遇到了一个问题先看如下代码:
  1. public class ReflectTest {


  2. public static void main(String[] args) throws Exception{

  3. /*Constructor constructor1 = String.class.getConstructor(StringBuffer.class);
  4. String string2 = (String) constructor1.newInstance(new StringBuffer("abc")) ;
  5. System.out.println(string2.charAt(2));*/

  6. ReflectPoint pt1 = new ReflectPoint(4, 6) ;
  7. ReflectPoint pt2 = new ReflectPoint(5, 8) ;
  8. Field fieldX = pt1.getClass().getField("x") ;
  9. System.out.println(fieldX.get(pt1));
  10. System.out.println(fieldX.get(pt2));

  11. }
  12. }
复制代码
  1. public class ReflectPoint {
  2. public int x ;
  3. private int y ;
  4. public ReflectPoint(int x, int y) {
  5. super();
  6. this.x = x;
  7. this.y = y;
  8. }

  9. }
复制代码

上面的代码中,Field fieldX = pt1.getClass().getField("x") ;这句话不管使用pt1还是pt2获得都是整个类里面的所有的x这个成员变量,而不是pt1这个对象里面的成员变量4是吧?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

6 个回复

倒序浏览
ReflectPoint pt1 = new ReflectPoint(4, 6) ;  这里你给x成员变量赋值为 4, 所以是4,。
回复 使用道具 举报
776699 发表于 2013-12-25 13:19
ReflectPoint pt1 = new ReflectPoint(4, 6) ;  这里你给x成员变量赋值为 4, 所以是4,。

这个我知道,我说的是fieldX,这个地方是不是只要它使用Field fieldX = pt1.getClass().getField("x") ;这个,那么不管是谁传递,都是整个类?
回复 使用道具 举报
本帖最后由 776699 于 2013-12-25 17:47 编辑
恩恩 发表于 2013-12-25 14:17
这个我知道,我说的是fieldX,这个地方是不是只要它使用Field fieldX = pt1.getClass().getField("x") ; ...


不是,不管是p1,还是p2操作,  确切的说你是操作对象中的x!!   类是你抽象中的东西, 你没有给它赋值,为0。
回复 使用道具 举报
hel 中级黑马 2013-12-25 14:50:49
报纸
Field fieldX = pt1.getClass().getField("x") ;

其中Filed是一个类,这个类中是ReflectPoint 全部对象上的x的值

如:ReflectPoint pt1 = new ReflectPoint(4, 6) ;
       ReflectPoint pt2 = new ReflectPoint(5, 8) ;
pt1 上的值是4,pt2上的值是5,
所以filedx代表的是一类事物,而不是一个,
当我们想要获取一个的时候就  fieldX.get(pt1),fieldX.get(pt2)  

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
hel 发表于 2013-12-25 14:50
Field fieldX = pt1.getClass().getField("x") ;

其中Filed是一个类,这个类中是ReflectPoint 全部对象上 ...

懂了,谢谢,我就一直在想是不是这样呢。:P
回复 使用道具 举报
恩恩 中级黑马 2013-12-25 14:55:32
7#
776699 发表于 2013-12-25 14:20
是的,不管是p1,还是p2操作,  都是操作类里面的变量x!!!

哦哦,好的,谢谢。懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马