中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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

小億
154
2023-11-13 21:14:30
欄目: 編程語言

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

  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()方法獲取屬性的值。

0
乐业县| 盐津县| 南部县| 大冶市| 陇西县| 大方县| 东安县| 兴安县| 万荣县| 乡城县| 交城县| 广昌县| 成都市| 保亭| 永和县| 郧西县| 库尔勒市| 鹿邑县| 广州市| 威远县| 玉龙| 花莲县| 辽源市| 胶州市| 招远市| 徐州市| 柳河县| 元朗区| 瓮安县| 平度市| 广宗县| 富锦市| 丹东市| 岗巴县| 钟祥市| 特克斯县| 铜川市| 寿宁县| 夏河县| 阿拉善盟| 子长县|