1. 程式人生 > 實用技巧 >反射_Class物件功能_獲取Field

反射_Class物件功能_獲取Field

獲取成員變數程式碼實操:

package cn.chunzhi.reflect;

import cn.chunzhi.domain.Person;
import java.lang.reflect.Field;

public class ReflectTest02 {
    public static void main(String[] args) throws Exception {
        // 1.獲取Person的Class物件
        Class<Person> personClass = Person.class;
        /*
            Field[] getFields()
            Field getField(String name)

            Field[] getDeclaredFields()
            Field getDeclaredFields(String name)
         
*/ // Field[] getFields():獲取所有public修飾的成員變數 Field[] fields = personClass.getFields(); for (Field field : fields) { System.out.println(field); } // Field getField(String name):獲取指定名稱的public修飾的成員變數 System.out.println("==============================="); Field a
= personClass.getField("a"); // 獲取成員變數a的值 Person p = new Person(); Object value = a.get(p); System.out.println(value); // 設定a的值 a.set(p, "迪麗熱巴"); System.out.println(p); System.out.println("==============================="); // Field[] getDeclaredFields():獲取所有的成員變數,不考慮修飾符
Field[] declaredFields = personClass.getDeclaredFields(); for (Field declaredField : declaredFields) { System.out.println(declaredField); } // Field getDeclaredFields(String name)d Field d = personClass.getDeclaredField("d"); // 忽略訪問許可權修飾符的安全檢查 d.setAccessible(true); // 暴力反射 Object value02 = d.get(p); System.out.println(value02); } }