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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java反射 field

發布時間:2025/3/12 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java反射 field 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java反射 field

  • 獲取字節碼文件對象

    Class c = Class.forName(“fieldtest.Student”);

  • 通過無參構造方法創建對象obj

    Constructor con = c.getConstructor();

    Object obj = con.newInstance();

  • 通過成員變量名,獲取單個的成員變量

    Field nameField = c.getField("name");//getField(String name)//Returns a Field object that reflects the specified public member field of the class or interface represented by this Class object. //The name parameter is a String specifying the simple name of the desired field
  • 將指定對象變量上此 Field 對象表示的字段設置為指定的新值

    nameField.set(obj, "y"); // 給obj對象的addressField字段設置值為"y"// public void set(Object obj,Object value)設置與Field對象對應的obj對象中的域的值為value
  • 如果想要獲取指定私有成員變量

    Field ageField = c.getDeclaredField(“age”);

  • 取消對私有變量age的訪問檢查

    ageField.setAccessible(true);

  • 將指定對象變量上此 Field 對象表示的字段設置為指定的新值

    ageField.set(obj, 18);

  • package fieldtest;public class Student {// 成員變量public String name;// 公共private int age;// 私有// 構造方法public Student() {super();// TODO Auto-generated constructor stub}// 私有構造方法private Student(String name) {this.name = name;}public Student(String name, int age) {super();this.name = name;this.age = age;}// 成員方法(getXxx/setXxx)public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}// 成員方法public void study() {System.out.println("我愛學習java!");}// 私有private void study(String string) {System.out.println("我還愛學習" + string);}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";} } package fieldtest;import java.lang.reflect.Constructor; import java.lang.reflect.Field;/** 通過發生獲取成員變量并使用*/ public class FieldDemo {public static void main(String[] args) throws Exception {// 獲取字節碼文件對象Class c = Class.forName("fieldtest.Student");// 獲取所有的成員變量System.out.println("獲取公共成員變量");Field[] fields = c.getFields();for (Field field : fields) {System.out.println(field);} System.out.println("獲取所有成員變量");Field[] fields1 = c.getDeclaredFields();//所有for (Field field : fields1) {System.out.println(field);}/** Person p = new Person(); p.address = "北京"; System.out.println(p);*/// 通過無參構造方法創建對象Constructor con = c.getConstructor();Object obj = con.newInstance();System.out.println(obj);// 通過成員變量名,獲取單個的成員變量Field nameField = c.getField("name");//getField(String name) //返回一個 Field對象,它反映此表示的類或接口的指定公共成員字段 類對象。 // public void set(Object obj,Object value)// 將指定對象變量上此 Field 對象表示的字段設置為指定的新值。nameField.set(obj, "y"); // 給obj對象的addressField字段設置值為"y"System.out.println(obj);// 獲取age并對其賦值// NoSuchFieldException 私有變量Field ageField = c.getDeclaredField("age");// IllegalAccessException 暴力訪問ageField.setAccessible(true);ageField.set(obj, 18);System.out.println(obj);} } /* 獲取公共成員變量 public java.lang.String fieldtest.Student.name 獲取所有成員變量 public java.lang.String fieldtest.Student.name private int fieldtest.Student.age Student [name=null, age=0] Student [name=y, age=0] Student [name=y, age=18] */

    總結

    以上是生活随笔為你收集整理的Java反射 field的全部內容,希望文章能夠幫你解決所遇到的問題。

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