有如下一个普通类,我想获取他的所有属性值
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;
}
可以通过反射的方式获取属性值
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;
}
}
测试
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);
}
}
输出
[name, age, tags]
也可以将class转为map对象,获取key的集合