用静态内部类代替多个枚举类尝试

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


/**
 * @创建人 yongming.li
 * @创建时间 2019/11/11
 * @描述
 */
public class Test {
    public static class RewardRunishment{
        public static final String REWARD = "奖励";
        public static final String PUNISHMENT = "惩罚";

        public static List<String> values(){
            List<String> list = new ArrayList<>();
            Field[] fields = RewardRunishment.class.getDeclaredFields();
            for (int i=0;i<fields.length;i++) {
                try {
                    //得到属性
                    Field field = fields[i];
                    //打开私有访问
                    field.setAccessible(true);
                    //获取属性
                    String name = field.getName();
                    //获取属性值
                    Object value = field.get(RewardRunishment.class);
                    //一个个赋值
                    list.add(String.valueOf(value));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            return list;
        }
    }
}
import com.alibaba.fastjson.JSONObject;

/**
 * @author yongming.li
 * @date 2019-11-15
 * @description:测试
 * @version: 1.0$
 */
public class Test2 {
    public static void main(String[] args) {
        System.out.println(JSONObject.toJSONString(Test.RewardRunishment.values()));
    }
}

运行结果:

["奖励","惩罚"]

进行优化:

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

/**
 * @author yongming.li
 * @date 2019-11-15
 * @description:静态内部类的父类
 * @version: $
 */
public class TestParent {
    public static List<?> values(Class clazz){
        List<Object> list = new ArrayList<>();
        Field[] fields = clazz.getDeclaredFields();
        for (int i=0;i<fields.length;i++) {
            try {
                //得到属性
                Field field = fields[i];
                //打开私有访问
                field.setAccessible(true);
                //获取属性
                String name = field.getName();
                //获取属性值
                Object value = field.get(clazz);
                //一个个赋值
                list.add(value);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
}
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;


/**
 * @创建人 yongming.li
 * @创建时间 2019/11/11
 * @描述
 */
public class Test {
    public static class RewardRunishment extends TestParent{
        public static final String REWARD = "奖励";
        public static final String PUNISHMENT = "惩罚";
        public static List<String> values(){
            return (List<String>) RewardRunishment.values(Test.RewardRunishment.class);
        }
    }
    public static class OrderType extends TestParent{
        public static final Integer BOOK = 1;
        public static final Integer SHARE = 2;
        public static List<Integer> values(){
            return (List<Integer>) OrderType.values(Test.OrderType.class);
        }
    }
}
import com.alibaba.fastjson.JSONObject;

/**
 * @author yongming.li
 * @date 2019-11-15
 * @description:测试
 * @version: 1.0$
 */
public class Test2 {
    public static void main(String[] args) {
        System.out.println(JSONObject.toJSONString(Test.RewardRunishment.values()));
        System.out.println(JSONObject.toJSONString(Test.OrderType.values()));
    }
}

运行结果:

["奖励","惩罚"]
[1,2]
原文地址:https://www.cnblogs.com/it-deepinmind/p/11868719.html