Java(通過反射獲取成員變數並使用)
阿新 • • 發佈:2019-01-30
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();
}
}