黑马程序员技术交流社区
标题:
成员变量和静态成员变量的反射
[打印本页]
作者:
Morgan
时间:
2015-7-5 16:55
标题:
成员变量和静态成员变量的反射
本帖最后由 Morgan 于 2015-7-5 17:03 编辑
1.类中的字段也就是成员变量,类中的成员变量也是用一个类来表示的,它就是Field类。
2.Class中的getField(String fieldName)方法用来获取到类中的字段,字段可以是静态的也可以是非静态的,但是这个方法不能获取到被private修饰的字段。如果要获取到被private修饰的字段要用getDeclaredFiled(String fieldName)方法。
3.得到字段Field类型的对象后。Field类中的方法get(Object obj)可以获取到obj对象上这个字段的值。如果字段是静态的就给这个方法传入null。对于私有的字段这个方法还是会抛出异常,所以在get之前首先要设置字段为可获取,通过Field的setAccessible(true)方法。
4.请看下面代码片段。
public class Point
{
private int x;
public int y;
public static int z=24;
public Point(int x, int y)
{
super();
this.x = x;
this.y = y;
}
}
复制代码
Point p = new Point(3, 5);
Field fieldy= p.getClass().getField("y");
System.out.println(fieldy.get(p));//5
System.out.println("----------I am split line.-----------");
Field fieldx= p.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
System.out.println(fieldx.get(p));//3
System.out.println("----------I am split line.-----------");
Field fieldz=p.getClass().getField("z");
System.out.println(fieldz.get(null));//24
复制代码
作者:
如初见
时间:
2015-7-5 17:48
谢谢楼主 学习了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2