zoukankan      html  css  js  c++  java
  • 用静态内部类代替多个枚举类尝试

    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]
  • 相关阅读:
    服务详解网址
    WCF、WebAPI、WCFREST、WebService之间的区别
    ql常见面试题 受用了
    用VSCode写python的正确姿势
    C#集合类型大盘点
    ASP.NET Web API 创建帮助页
    C#中IEnumerable、ICollection、IList、List之间的区别
    [WCF REST] 一个简单的REST服务实例
    sql存储过程算法
    oracle 存储过程
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/11868719.html
Copyright © 2011-2022 走看看