Java:通过反射获取class类的属性

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

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的集合

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

猜你喜欢

转载自blog.csdn.net/mouday/article/details/140932050
今日推荐