Java反射可以通過java.lang.reflect.Field
類來給對象的屬性賦值。以下是一個示例代碼:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws Exception {
// 創(chuàng)建對象
Person person = new Person();
// 獲取屬性
Field nameField = Person.class.getDeclaredField("name");
// 設(shè)置屬性可訪問性
nameField.setAccessible(true);
// 給屬性賦值
nameField.set(person, "John");
// 輸出屬性值
System.out.println(person.getName()); // 輸出: John
}
}
class Person {
private String name;
public String getName() {
return name;
}
}
在上面的例子中,首先創(chuàng)建了一個Person
對象。然后使用Person.class.getDeclaredField
方法獲取到了Person
類的name
屬性。為了能夠訪問私有屬性,需要調(diào)用Field.setAccessible(true)
方法將其設(shè)置為可訪問。最后,調(diào)用Field.set
方法將屬性值設(shè)置為"John"。可以通過person.getName()
方法驗證屬性值是否被成功設(shè)置。