通过反射获取成员变量并使用
生活随笔
收集整理的這篇文章主要介紹了
通过反射获取成员变量并使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package cn.learn_03;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;/** 通過發(fā)生獲取成員變量并使用*/
public class ReflectDemo {public static void main(String[] args) throws Exception {// 獲取字節(jié)碼文件對象Class c = Class.forName("cn.learn_01.Person");// 獲取所有的成員變量// Field[] fields = c.getFields();// Field[] fields = c.getDeclaredFields();// for (Field field : fields) {// System.out.println(field);// }/** Person p = new Person(); p.address = "北京"; System.out.println(p);*/// 通過無參構(gòu)造方法創(chuàng)建對象Constructor con = c.getConstructor();Object obj = con.newInstance();System.out.println(obj);// 獲取單個的成員變量// 獲取address并對其賦值Field addressField = c.getField("address");// public void set(Object obj,Object value)// 將指定對象變量上此 Field 對象表示的字段設(shè)置為指定的新值。addressField.set(obj, "北京"); // 給obj對象的addressField字段設(shè)置值為"北京"System.out.println(obj);// 獲取name并對其賦值// NoSuchFieldExceptionField nameField = c.getDeclaredField("name");// IllegalAccessExceptionnameField.setAccessible(true);nameField.set(obj, "林青霞");System.out.println(obj);// 獲取age并對其賦值Field ageField = c.getDeclaredField("age");ageField.setAccessible(true);ageField.set(obj, 27);System.out.println(obj);}
}
?
總結(jié)
以上是生活随笔為你收集整理的通过反射获取成员变量并使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过反射获取私有构造方法并使用
- 下一篇: 通过反射获取无参无返回值成员方法并使用