1. 程式人生 > >Java(通過反射獲取成員變數並使用)

Java(通過反射獲取成員變數並使用)

package com.sanmao10;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class test_Field {
    /**
     * ###27.06_反射(通過反射獲取成員變數並使用)
     * Field
     * Class.getField(String)方法可以獲取類中的指定欄位(可見的),
     * 如果是私有的可以用getDeclaedField("name")方法獲取,通過set(obj, "李四")
     * 方法可以設定指定物件上該欄位的值, 如果是私有的需要先呼叫setAccessible(true)設定訪問許可權,
     * 用獲取的指定的欄位呼叫get(obj)可以獲取指定物件中該欄位的值
     * */
public static void main(String[] args) throws Exception{ Class clazz=Class.forName("com.sanmao10.Person"); Constructor constructor=clazz.getConstructor(String.class,int.class); Person p=(Person)constructor.newInstance("sanmao",25); Field field=clazz.getDeclaredField("name"
); //如果是私有的可以用getDeclaedField("name")方法獲取 //通過set(obj, "李四") //獲取姓名欄位 field.setAccessible(true);//如果是私有的需要先呼叫setAccessible(true)設定訪問許可權, field.set(p,"yongchao"); p.say(); } }