Java Field.get()取得对象的Field属性值

定义

public Object get(Object obj)

1. 如果字段不是静态字段的话,要传入反射类的对象.如果传null是会报java.lang.NullPointerException 

2. 如果字段是静态字段的话,传入任何对象都是可以的,包括null 

例子

1. 获取属性的值

public static void main(String[] args) throws Exception {
    //使用反射第一步:获取操作类FieldDemo所对应的Class对象
    Class < ?>cls = Class.forName("com.testReflect.FieldDemo");
    //使用FieldDemo类的class对象生成 实例
    Object obj = cls.newInstance();
    //通过Class类中getField(String name): 获取类特定的方法,name参数指定了属性的名称
    Field field = cls.getField("num1");

    //拿到了Field类的实例后就可以调用其中的方法了
    //方法:get(Object obj) 返回指定对象obj上此 Field 表示的字段的值
    System.out.println("属性值:  " + field.get(obj));

    //方法: set(Object obj, Object value)  将指定对象变量上此 Field 对象表示的字段设置为指定的新值
    field.set(obj, 55);
    System.out.println("修改属性值后 --> get(Object obj):  " + field.get(obj));
}

2. get()传值

class A {  
     int fild=3;  
    static int staticFild=4;  
} 
public class FiledTest  
{  
    public static void main(String[] args) throws Exception  
    {  
        Field field=A.class.getDeclaredField("fild");  
        int a= (Integer)field.get(new A()) ;  
//        int c= (Integer)field.get(null) ; //不是静态字段不能传null  
        System.out.println(a);  
  
        Field staticfield=A.class.getDeclaredField("staticFild");  
        int b= (Integer)staticfield.get("") ;  
        int d= (Integer)staticfield.get(null) ;  
        System.out.println(b);  
        System.out.println(d);  
    }  
}

运行结果:

3 
4 
4

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。