属性名和属性值"/>
使用反射来遍历Java对象类中的所有属性名和属性值
有些时候我们需要获取到一个对象中的所有属性名和属性值,对其值进行修改或是其他操作。
这种时候我们再使用get(),set()来进行操作就会有些麻烦了。
因此我们可以选择使用反射来进行遍历对象中的所有属性名和属性值。在遍历中编写逻辑来对属性进行操作。
示例代码如下:
- 创建一个Person作为实体类
package com.vinci.reflectionTraversalAttribute.entity;public class Person {private String name; private int age; private String email;public Person() {}public Person(String name, int age, String email) {this.name = name; this.age = age; this.email = email; } 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; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", email='" + email + '\'' +'}';}
}
- 创建一个Person对象并给其属性赋值
/*** @description: 创建一个Person对象,并给属性赋值* @author: Vinci* @date: 2023/11/9 10:10**/public static Person getPerson(){return new Person("Vinci",24,"atvinci@foxmail");}
- 利用反射来遍历对象中的属性
public static void main(String[]args) throws IllegalAccessException {//创建一个Person对象Person person = getPerson();//通过getDeclaredFields()方法获取对象类中的所有属性(含私有)Field[] fields = person.getClass().getDeclaredFields();//遍历属性for (Field field : fields) {//通过setAccessible()设置为true,允许通过反射访问私有变量field.setAccessible(true);//获取属性值Object value = field.get(person);//获取属性名String name = field.getName();//输出到控制台System.out.println("属性名:"+name+" 值:"+value);//对name字段进行修改if("name".equals(name)){field.set(person,"李予安");}}//输出修改过的对象到控制台System.out.println("\n修改过的对象: " + person.toString());}
控制台输出结果:
更多推荐
使用反射来遍历Java对象类中的所有属性名和属性值
发布评论