java 使用反射操作字段


Field提供兩組方法操作字段:

xxx getXxx(Object obj):獲取obj對象該Field的字段值,此處的xxx表示8個基本數據類型。若該字段的類型是引用數據類型則使用,Object get(Object obj);

void setXxx(Object obj,xxx val):將obj對象的該Field字段設置成val值,此處的xxx表示8個基本數據類型。若該字段的類型是引用數據類型則使用,void set(Object obj, Object value);

 

package junereflect624;

//獲取字符,並且賦值,然后再取出來(對應的去查看api,比如這個是Field,別的比如Constructor,Method)

步驟:

1.獲取類

2.獲取字段

3.賦值(set(c.newInstance(),””));{如果為私有的話設置可接受}

import java.lang.reflect.Field;

 

class Cat{

    private String name;

    public int age;

    private String color;

}

 

public class FieldDemo12 {

    public static void main(String[] args) throws Exception {

        Class<Cat> clz = Cat.class;

        Field[] f = clz.getDeclaredFields();

       

        for (Field field : f) {

            System.out.println(field);

        }

       

        Field fi = clz.getDeclaredField("name");

        System.out.println(fi);

       

        System.out.println(fi.getName());//name

       

        //核心開始

        /**

         *  void set(Object obj, Object value)

將指定對象變量上此 Field 對象表示的字段設置為指定的新值。

         */

        Cat c = clz.newInstance();

        fi.setAccessible(true);

        fi.set(c, "劉昭");//賦值成功

        Object o = fi.get(c);

        System.out.println(o);//取出成功

       

        fi = clz.getDeclaredField("age");

        fi.setAccessible(true);

        fi.set(c, 21);

        int i = fi.getInt(c);//左邊的接受類型已經寫成了int,右邊的返回類型就也必須是int

        System.out.println(i);//獲取成功

    }

}

 

打印

private java.lang.String junereflect624.Cat.name

public int junereflect624.Cat.age

private java.lang.String junereflect624.Cat.color

private java.lang.String junereflect624.Cat.name

name

劉昭

21


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM