久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java怎么通過反射給屬性賦值

120次閱讀
沒有評論

共計 1152 個字符,預計需要花費 3 分鐘才能閱讀完成。

通過反射給屬性賦值,可以使用以下步驟:

  1. 獲取類的 Class 對象:使用 Class.forName() 方法或者直接使用類名的 .class 屬性獲取類的 Class 對象。
  2. 獲取屬性對象:使用 Class 對象的 getField()getDeclaredField()方法獲取屬性對象。getField()方法只能獲取公共屬性,而 getDeclaredField() 方法可以獲取所有屬性。
  3. 設置屬性可訪問性:如果屬性是私有的,需要使用 setAccessible(true) 方法設置可訪問性為 true。
  4. 使用屬性對象的 set() 方法給屬性賦值。

以下是一個簡單的例子:

class Person {public String name;
    private int age;
    
    public void setName(String name) {this.name = name;
    }
    
    private void setAge(int age) {this.age = age;
    }
}

public class Main {public static void main(String[] args) throws Exception {// 獲取 Person 類的 Class 對象
        Class<?> personClass = Class.forName("Person");
        
        // 獲取 name 屬性對象
        java.lang.reflect.Field nameField = personClass.getField("name");
        
        // 創建 Person 對象
        Person person = new Person();
        
        // 給 name 屬性賦值
        nameField.set(person, "John");
        
        // 獲取 age 屬性對象
        java.lang.reflect.Field ageField = personClass.getDeclaredField("age");
        
        // 設置 age 屬性可訪問性為 true
        ageField.setAccessible(true);
        
        // 給 age 屬性賦值
        ageField.set(person, 20);
        
        System.out.println(person.name);  // 輸出: John
        System.out.println(ageField.getInt(person));  // 輸出: 20
    }
}

在上面的例子中,首先使用 Class.forName() 方法獲取 Person 類的 Class 對象。然后使用 getField() 方法獲取 name 屬性對象并給其賦值。接著使用 getDeclaredField() 方法獲取 age 屬性對象,并使用 setAccessible(true) 方法設置其可訪問性為 true,然后才能給 age 屬性賦值。最后通過 name 屬性和 ageField.getInt() 方法獲取屬性的值。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-12發表,共計1152字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 河源市| 湘阴县| 莫力| 井冈山市| 鸡东县| 贵港市| 华阴市| 梁平县| 开化县| 高要市| 澳门| 微博| 虹口区| 博客| 泸溪县| 奉新县| 资阳市| 蓝田县| 汕头市| 宁夏| 泸西县| 镇平县| 罗田县| 德庆县| 高邑县| 洛川县| 宁国市| 彭水| 昭觉县| 若尔盖县| 景洪市| 延津县| 桦南县| 锦州市| 闽清县| 新干县| 冷水江市| 贡嘎县| 永春县| 南昌县| 清镇市|