通过反射获取Java实体类所有属性

admin 2024-9-4 1,010 9/4

通过反射获取Java实体类所有属性

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.open2ai</groupId>
  <artifactId>jdk8-demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>jdk8-demo</name>
  <url>https://www.open2ai.cn</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.32</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>

BaseEntity.java

package cn.open2ai.jdk8.reflect;
import lombok.Data;
@Data
public class Base {
    private Long id;
    private String name;
}

MyEntity.java

package cn.open2ai.jdk8.reflect;
import lombok.Data;
@Data
public class MyEntity extends BaseEntity {
    private String name;
    private Integer age;
    private Integer sex;
}

ReflectDemoApp.java

package cn.open2ai.jdk8.reflect;
import java.lang.reflect.Field;
public class ReflectDemoApp {
    public static void main(String[] args) throws IllegalAccessException {
        MyDomain my = new MyDomain();
        my.setId(100L);
        my.setName("demo");
        my.setAge(18);
        my.setSex("woman");
        getAllFields(my);
    }
    public static void getAllFields(Object object) throws IllegalAccessException {
        Class clazz = object.getClass();
        do {
            Field[] fields = clazz.getDeclaredFields();
            for (Field field : fields) {
                field.setAccessible(true); // 如果字段是私有的,需要设置为可访问
                Object value = field.get(object); // 获取字段值
                System.out.println(field.getName() +": "+ value);
            }
            clazz = clazz.getSuperclass();
        } while (clazz != Object.class);
    }
}

运行结果

name: demo
age: 18
sex: woman
id: 100

参考

 

 

- THE END -

admin

9月04日13:50

最后修改:2024年9月4日
0

非特殊说明,本博所有文章均为博主原创。