java如何通过遍历得到对象里面的属性并且对其重新赋值
时间: 2024-06-11 12:10:55 浏览: 13
可以通过反射机制来遍历对象的属性并对其重新赋值。以下是一个简单的示例代码:
```java
import java.lang.reflect.Field;
public class Example {
public static void main(String[] args) {
User user = new User("张三", 18);
// 遍历对象的属性
Field[] fields = user.getClass().getDeclaredFields();
for (Field field : fields) {
// 设置属性可访问
field.setAccessible(true);
try {
// 获取属性的值
Object value = field.get(user);
System.out.println(field.getName() + ": " + value);
// 如果属性是int类型,则重新赋值为100
if (field.getType() == int.class) {
field.setInt(user, 100);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
// 输出修改后的属性值
System.out.println("修改后的属性值:");
System.out.println(user.getName());
System.out.println(user.getAge());
}
static class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
```
输出结果:
```
name: 张三
age: 18
修改后的属性值:
张三
100
```
在遍历对象的属性时,需要使用`Field`类的`setAccessible(true)`方法将属性设置为可访问的,然后使用`get()`方法获取属性的值。如果属性是int类型,则可以使用`setInt()`方法将其重新赋值。最后输出修改后的属性值即可。