近用到枚举,由于枚举变量比较多且存在一定的分组分类的关系,所以想能比较清晰的维护这些变量。今晚有空,简单研究了一下,分享出来,供大家讨论。

  可供考虑的分类方式

    /**
     * 枚举接口
     * 
     * @author lihzh(苦逼coder)
     * @data 2012-2-21 下午8:51:39
     */
    public interface EnumInter {
        public enum EnumB implements EnumInter{
            B1, B2, B3;
            public enum EnumSubB implements EnumInter{
                C1, C2, C3
            }
        }
    }

  调用方式和一些其他测试:

    /**
     * 测试练习枚举用法
     * 
     * @author lihzh(苦逼coder)
     * @data 2012-2-21 下午8:49:41
     */
    public class EnumMain {
        /**
         * @param args
         * @author lihzh
         * @data 2012-2-21 下午8:49:41
         */
        public static void main(String[] args) {
            // 遍历枚举
            for (EnumDemo e : EnumDemo.values()) {
                System.out.println("EnumDemo values: " + e.name());
            }
            // 枚举集合,简介
            EnumMap<EnumDemo, String> enumMap = new EnumMap<EnumDemo, String>(
                    EnumDemo.class);
            enumMap.put(EnumDemo.A, "AAA");
            // 定义函数
            System.out.println(EnumDemo.A.getValue());
            System.out.println(EnumDemo.E.getValue());
            // 使用接口分组枚举
            EnumInter eInter = EnumInter.EnumB.B2;
            EnumInter eInterB = EnumInter.EnumB.EnumSubB.C1;
            printValue(eInter);
            printValue(eInterB);
        }
        private static void printValue(EnumInter eInter) {
            System.out.println(eInter.toString());
        }
        public enum EnumDemo implements EnumInter {
            A, B, C, D, E;
            public String getValue() {
                return "Value is: " + this.name();
            }
        }
    }

  主要是27,28行的调用方式。可体现出分组的效果。方法接口参数,统一接受接口类型即可。