有如下一个普通类,我想获取他的所有属性值

package com.demo.bean;

import lombok.Data;

import java.util.List;

@Data
public class UserBean {
    private String name;

    private Integer age;

    private List<String> tags;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

可以通过反射的方式获取属性值

package com.demo;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class BeanUtil {
    public static List<String> getFields(Class<?> clazz) {
        List<String> fields = new ArrayList<>();

        // 获取所有属性(包括私有的)
        Field[] allFields = clazz.getDeclaredFields();
        for (Field field : allFields) {
            fields.add(field.getName());
        }

        return fields;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

测试

package com.demo;

import com.demo.bean.UserBean;
import org.junit.jupiter.api.Test;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

class BeanUtilTest {

    @Test
    void getFields() {

        List<String> fields = BeanUtil.getFields(UserBean.class);
        System.out.println(fields);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

输出

[name, age, tags]
  • 1.

也可以将class转为map对象,获取key的集合

可参考:Java:Bean实体对象和Map互相转换