黑马程序员技术交流社区

标题: 得到的Filed对象是对应到类上面的成员变量,还是对应到对. [打印本页]

作者: 黑马---邢志伟    时间: 2012-6-15 21:31
标题: 得到的Filed对象是对应到类上面的成员变量,还是对应到对.
本帖最后由 黑马---邢志伟 于 2012-6-16 09:04 编辑

得到的Filed对象是对应到类上面的成员变量,还是对应到对象上的成员变量?求助,,这是看反射视频中遇到的问题。。。
作者: 信义明    时间: 2012-6-15 22:05
Field对应的对象时类中的成员变量,方法为:对象名.getClass().getField("类中的成员变量名")
如想得到对象上成员变量的值,Field对象.get(对象名)就能获得你想要得到的对象上的成员变量值
以上是类中成员变量的修饰符为public的情况
如果成员变量被私有,就用:对象名.getClass().getDeclaredField("私有的成员变量")
再用Field对象名.setAccessible(true)获得权限
再用Field对象名.get(对象名)得到那个对象上私有成员变量值
这些在张老师的视频里有,我写的看不明白的话,还是看视频吧,里面讲的很清楚
作者: 薄炳鑫    时间: 2012-6-15 22:14
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. }
复制代码

作者: 黑马---邢志伟    时间: 2012-6-16 09:02
谢了,,,有一点明白了、、、




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