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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马---邢志伟 于 2012-6-16 09:04 编辑

得到的Filed对象是对应到类上面的成员变量,还是对应到对象上的成员变量?求助,,这是看反射视频中遇到的问题。。。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
Field对应的对象时类中的成员变量,方法为:对象名.getClass().getField("类中的成员变量名")
如想得到对象上成员变量的值,Field对象.get(对象名)就能获得你想要得到的对象上的成员变量值
以上是类中成员变量的修饰符为public的情况
如果成员变量被私有,就用:对象名.getClass().getDeclaredField("私有的成员变量")
再用Field对象名.setAccessible(true)获得权限
再用Field对象名.get(对象名)得到那个对象上私有成员变量值
这些在张老师的视频里有,我写的看不明白的话,还是看视频吧,里面讲的很清楚

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Field字段属性是类上的,用来取某个对象上的对应字段,而不是对象上的。下面是举例的代码。
  1. import java.lang.reflect.Field;

  2. public class ReflectTest
  3. {
  4.        
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.        
  8.                 ReflectPoint rp = new ReflectPoint(3, 5);
  9.                 Field filedY = rp.getClass().getField("y");
  10.                 //filedY的值是多少呢?是5吗,不是。这里的filedY不是对象身上的,而是类身上的,用来取某够对象上面的值。
  11.                 System.out.println(filedY.get(rp));
  12.         }
  13. }

  14. public class ReflectPoint
  15. {
  16.        
  17.         public int        x;
  18.        
  19.         public int        y;
  20.        
  21.         public ReflectPoint(int x, int y)
  22.         {
  23.        
  24.                 super();
  25.                 this.x = x;
  26.                 this.y = y;
  27.         }
  28.        
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
谢了,,,有一点明白了、、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马