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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© —__ 中级黑马   /  2012-5-9 07:56  /  1806 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频中老师讲到一下的代码
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 是面向对象的,是对象身上的变量呢?这样的话是不是跟老师说的话有冲突呢?


评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

3 个回复

倒序浏览
直接写System.out.println(fieldY.get(pt2)); fieldY对应的是类,而不是对象。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
一个类被创建了对象后就意味着这个类被实例话了。
用大白话说,我们比如有一个汽车类,这个类有汽车的各种特征。那么我们创建一个对象实例化这个类,比如 汽车 标志牌=new 汽车;
那么标志汽车我们是不是可以让他是标志408也可以让它是标志207呀。所以,直接打印嘛。
不知道这样说你能不能理解。也可能是我理解的不对哈。 早上刚起来,脑袋里一个代码没有,真心想不出什么好的例子出来。  

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
懂了 很感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马