java如何使用反射遍历枚举常量呢?

书欣 Java经验 发布时间:2022-09-30 16:36:38 阅读数:11394 1
下文笔者讲述java代码遍历枚举常量的方法分享,如下所示
由于枚举类中使用了大量的常量,那么有没有办法一种办法可以获取批量获取常量信息呢?
下文笔者讲述使用反射的方式
  批量输出常量信息,如下例所示

枚举类定义

public enum CacheEnum {
    /**产品ID缓存*/
    PRODUCT_IDS("PRODUCT_IDS", "产品ID缓存" , 0, 0);

    /**缓存名称*/
    private String name;
    /**缓存过期时间单位毫秒,0则永久缓存*/
    private long ttl;
    /**描述*/
    private String text;
    /**最大空闲时间,单位毫秒,多久未使用则丢弃,0则永不丢弃*/
    private long maxIdleTime;

    CacheEnum(String name, String text, long ttl, long maxIdleTime){
        this.name = name;
        this.ttl = ttl;
        this.text = text;
        this.maxIdleTime = maxIdleTime;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getTtl() {
        return ttl;
    }

    public void setTtl(long ttl) {
        this.ttl = ttl;
    }

    public long getMaxIdleTime() {
        return maxIdleTime;
    }

    public void setMaxIdleTime(long maxIdleTime) {
        this.maxIdleTime = maxIdleTime;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

}

使用反射方法遍历常量并放到map中

public class CacheEnumTest {
    @Test
    public void test(){
        Map<String, Map<String, Object>> config = new HashMap<String, Map<String, Object>>();
        try {
            Class<CacheEnum> clazz = CacheEnum.class;
            Method name = clazz.getMethod("getName");
            Method ttl = clazz.getMethod("getTtl");
            Method maxIdleTime = clazz.getMethod("getMaxIdleTime");
            for (Object obj : clazz.getEnumConstants()) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("ttl", ttl.invoke(obj));
                map.put("maxIdleTime", maxIdleTime.invoke(obj));
                config.put((String) name.invoke(obj), map);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        System.out.println(JSON.toJSONString(config));
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202209/16645270454546.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者