http://blog.csdn.net/ishallwin/article/details/9440251看下这个吧,用的时候直接用就可以了,不用深究太多,毕竟Java要学的还是很多......

解决方案 »

  1.   

    枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维护性。Java中的枚举并不是简单常量的集合,而是一个对象,其本质依然是类,所以Java中的枚举除了提供一系列相关值以外,还提供了一些额外功能,甚至还可以根据需要自行添加一些功能。
    定义枚举需要使用关键字enum。
    用法一:常量
    public enum Color {  
      RED, GREEN, BLANK, YELLOW  
    }  
    用法二:switch
    enum Signal {  
        GREEN, YELLOW, RED  
    }  
    public class TrafficLight {  
        Signal color = Signal.RED;  
        public void change() {  
            switch (color) {  
            case RED:  
                color = Signal.GREEN;  
                break;  
            case YELLOW:  
                color = Signal.RED;  
                break;  
            case GREEN:  
                color = Signal.YELLOW;  
                break;  
            }  
        }  
    }  
    用法三:向枚举中添加新方法
    public enum Color {  
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
        // 普通方法  
        public static String getName(int index) {  
            for (Color c : Color.values()) {  
                if (c.getIndex() == index) {  
                    return c.name;  
                }  
            }  
            return null;  
        }  
        // get set 方法  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public int getIndex() {  
            return index;  
        }  
        public void setIndex(int index) {  
            this.index = index;  
        }  
    }  
    用法四:覆盖枚举的方法
    public enum Color {  
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
        //覆盖方法  
        @Override  
        public String toString() {  
            return this.index+"_"+this.name;  
        }  
    }  
    用法五:实现接口
    public interface Behaviour {  
        void print();  
        String getInfo();  
    }  
    public enum Color implements Behaviour{  
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
    //接口方法  
        @Override  
        public String getInfo() {  
            return this.name;  
        }  
        //接口方法  
        @Override  
        public void print() {  
            System.out.println(this.index+":"+this.name);  
        }  

    用法六:使用接口组织枚举
    public interface Food {  
        enum Coffee implements Food{  
            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
        }  
        enum Dessert implements Food{  
            FRUIT, CAKE, GELATO  
        }  
    }  
    用法七:关于枚举集合的使用
    java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
      

  2.   

    一个 枚举实现接口的例子
    /**  
     * 表映射为对象类  
     *  
     */  
    public class TableObjects {  
      
        public enum ColumnType {  
      
            INTEGER,DOUBLE,CHAR,VARCHAR,FLOAT  
        }  
          
        interface table  
        {  
            ColumnType getType();  
            int getColLength();  
            String getColName();  
            table getColumn(String colName);  
            table[] getColumns();  
        }  
          
        public enum t_user implements table  
        {  
            //id的长度无论是否设置都是11(mysql数据库)  
            id("id",11,ColumnType.INTEGER),  
            username("username",30,ColumnType.VARCHAR),  
            password("password",30, ColumnType.VARCHAR);  
              
             String colName = null;  
             int colLength = 0;  
             ColumnType type = null;  
               
            public String getColName() {  
                return colName;  
            }  
      
            public int getColLength() {  
                return colLength;  
            }  
      
            public ColumnType getType() {  
                return type;  
            }  
              
            private t_user(String colName, int colLength, ColumnType type)  
            {  
                this.colName = colName;  
                this.colLength = colLength;  
                this.type = type;  
            }  
      
            /**  
             * 根据列名获取列结构  
             * @param colName  
             * @return  
             */  
            public t_user getColumn(String colName) {  
                for (t_user colEnum : t_user.values()) {  
                    if(colName.equals(colEnum.getColName()))  
                    {  
                        return colEnum;  
                    }  
                }  
                return null;  
            }  
              
            /**  
             * 获取所有列结构  
             * @return  
             */  
            public t_user[] getColumns()  
            {  
                return t_user.values();  
            }  
        }  
          
        /**  
         * 下面继续写别的映射类,有多少写多少  
         */