Live2D

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"

}`

posted @ 2023-08-08 18:51  codeforworld  阅读(3792)  评论(0)    收藏  举报
Live2D