本帖最后由 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
复制代码
|
|