Java枚举中定义枚举,通过反射获取值

定义枚举

public enum NodeType {

    USER_TASK("userTask", "用户审批节点", UserTask.class);

    public String type;
    public String name;
    public Class<?> clazz;

    public String getType() {
        return type;
    }

    NodeType(String type, String name, Class<?> clazz) {
        this.type = type;
        this.name = name;
        this.clazz = clazz;
    }

   /**
     * 根据type获取枚举
     *
     * @param type
     * @return
     */
    public static NodeType getByType(String type) {
        for (NodeType value : NodeType.values()) {
            if (value.getType().equals(type)) {
                return value;
            }
        }
        return null;
    }
}
public enum UserTask {

    ARGS1("args1", "assignType", "审批类型"),
    ARGS2("args2", "assignValue", "关联审批人或组"),
    ARGS3("args3", "javaClass", "自定义类名"),
    ARGS4("args4", "dueDate", "持续时间"),
    ARGS5("args5", "isSequential", "是否会签");

    public String args;
    public String key;
    public String name;

    public String getArgs() {
        return args;
    }

    public String getKey() {
        return key;
    }

    UserTask(String args, String key, String name) {
        this.args = args;
        this.key = key;
        this.name = name;
    }
}

测试: 

    public static void main(String[] args) throws Exception {
        NodeType nodeType = NodeType.getByCode("userTask");
        Class<?> clazz = nodeType.clazz;
        Object[] objects = clazz.getEnumConstants();
        Method getKey = clazz.getMethod("getKey");
        for (Object object : objects) {
            String key = (String) getKey.invoke(object);
            System.out.println(key);
        }
    }

输出结果:

assignType
assignValue
javaClass
dueDate
isSequential

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值