java使用反射给对象属性赋值的两种方法

java使用反射给对象属性赋值的两种方法

方法一:使用Class类的getMethod()和setAccessible()方法;

`public class User {

private String name;

public void setName(String name) {

this.name = name;

}

}

public static void main(String[] args) throws Exception {

// 创建User对象

User user = new User();

// 获取setName()方法

Method setNameMethod = User.class.getDeclaredMethod("setName", String.class);

// 调用setAccessible()方法,使得可以访问setName()方法

setNameMethod.setAccessible(true);

// 在User对象上调用setName()方法,设置name属性的值

setNameMethod.invoke(user, "Alice");

System.out.println(user.getName()); // 输出 "Alice"

}`

方法二:使用Field类的setAccessible()和set()方法;

`public class User {

private String name;

public void setName(String name) {

this.name = name;

}

}

public static void main(String[] args) throws Exception {

// 创建User对象

User user = new User();

// 获取name属性

Field nameField = User.class.getDeclaredField("name");

// 调用setAccessible()方法,使得可以访问name属性

nameField.setAccessible(true);

// 在User对象上调用setName()方法,设置name属性的值

nameField.set(user, "Alice");

System.out.println(user.getName()); // 输出 "Alice"

}`

相关文章