亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
揭阳市| 盈江县| 梅州市| 赣州市| 施秉县| 五家渠市| 九寨沟县| 宾阳县| 扬中市| 承德市| 红河县| 武强县| 泸定县| 卓资县| 鹿邑县| 中阳县| 天全县| 伊宁市| 大连市| 明光市| 华蓥市| 大埔县| 南康市| 江阴市| 盘山县| 南和县| 平安县| 巴马| 扶绥县| 株洲市| 海宁市| 高淳县| 明星| 温宿县| 田东县| 嘉祥县| 贵南县| 郑州市| 大理市| 通榆县| 台北县|