日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射获取成员变量并使用【应用】

發布時間:2024/4/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射获取成员变量并使用【应用】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Class類獲取成員變量對象的方法

  • 方法分類

    方法名說明
    Field[] getFields()返回所有公共成員變量對象的數組
    Field[] getDeclaredFields()返回所有成員變量對象的數組
    Field getField(String name)返回單個公共成員變量對象
    Field getDeclaredField(String name)返回單個成員變量對象
  • 示例代碼

public class ReflectDemo01 {public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {//獲取Class對象Class<?> c = Class.forName("com.leon_02.Student");//Field[] getFields() 返回一個包含 Field對象的數組, Field對象反映由該 Class對象表示的類或接口的所有可訪問的公共字段//Field[] getDeclaredFields() 返回一個 Field對象的數組,反映了由該 Class對象表示的類或接口聲明的所有字段 // Field[] fields = c.getFields();Field[] fields = c.getDeclaredFields();for(Field field : fields) {System.out.println(field);}System.out.println("--------");//Field getField(String name) 返回一個 Field對象,該對象反映由該 Class對象表示的類或接口的指定公共成員字段//Field getDeclaredField(String name) 返回一個 Field對象,該對象反映由該 Class對象表示的類或接口的指定聲明字段Field addressField = c.getField("address");//獲取無參構造方法創建對象Constructor<?> con = c.getConstructor();Object obj = con.newInstance();// obj.addressField = "西安";//Field提供有關類或接口的單個字段的信息和動態訪問//void set(Object obj, Object value) 將指定的對象參數中由此 Field對象表示的字段設置為指定的新值addressField.set(obj,"西安"); //給obj的成員變量addressField賦值為西安System.out.println(obj);// Student s = new Student(); // s.address = "西安"; // System.out.println(s);} }

Field類用于給成員變量賦值的方法

方法名說明
voidset(Object obj,Object value)給obj對象的成員變量賦值為value

反射獲取成員變量并使用練習【應用】

  • 案例需求

    • 通過反射獲取成員變量并賦值

  • 代碼實現

    • 學生類:參見上方學生類

    • 測試類

public class ReflectDemo02 {public static void main(String[] args) throws Exception {//獲取Class對象Class<?> c = Class.forName("com.leon_02.Student");//Student s = new Student();Constructor<?> con = c.getConstructor();Object obj = con.newInstance();System.out.println(obj);//s.name = "林青霞"; // Field nameField = c.getField("name"); //NoSuchFieldException: nameField nameField = c.getDeclaredField("name");nameField.setAccessible(true);nameField.set(obj, "林青霞");System.out.println(obj);//s.age = 30;Field ageField = c.getDeclaredField("age");ageField.setAccessible(true);ageField.set(obj,30);System.out.println(obj);//s.address = "西安";Field addressField = c.getDeclaredField("address");addressField.setAccessible(true);addressField.set(obj,"西安");System.out.println(obj);} }

?

總結

以上是生活随笔為你收集整理的反射获取成员变量并使用【应用】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。