哈哈哈123457
2017-08-02 07:21
采纳率: 100%
浏览 9.2k
已采纳

java什么时候要用到枚举 用枚举的好处是什么

java什么时候要用到枚举 用枚举的好处是什么。。。。。。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • wlq199101 2017-08-02 07:40
    已采纳

    举个例子。
    比如一个职员有一个 状态属性, 在职/离职 用1和0代替 。
    这时候 列个枚举 ENABLE = 1 和 DISABLE = 0;
    这样在读代码的时候就可以很快辨认 这个状态目前是什么。
    然后如果我想要 离职变成2代替。可以直接更改 DISABLE = 2 即可;

    当然上面就两个状态,如果有 10个 20个呢? 数字 1-20 就很难分辨每个数字代表什么意思。枚举给数字 附一个名字就显得没有那么麻烦了

    点赞 评论
  • 三国为你杀 2017-08-02 07:28

    枚举就是按自己的思想编写的几种类型,别人只能在这几个范围内进行选择,就比如实际中的红绿灯 方向键之类的,反正就是一种默认的规范吧,个人见解

    点赞 评论
  • Tsui丶 2017-08-02 07:32

    用法一:常量

    在JDK1.5 之前,我们定义常量都是: publicstaticfianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

     public enum Color {
      RED, GREEN, BLANK, YELLOW
    }
    

    switch

    JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

    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;  
            }  
        }  
    }  
    
    

    用法三:向枚举中添加新方法

    如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

    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;  
        }  
    }  
    
    

    用法四:覆盖枚举的方法

    下面给出一个toString()方法覆盖的例子。

     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;  
        }  
    }  
    

    用法五:实现接口

    所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

     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文档。
    关于枚举的实现细节和原理请参考:
    参考资料:《ThinkingInJava》第四版
    http://softbeta.iteye.com/blog/1185573

    点赞 评论
  • zyh127 2017-08-02 08:19

    个人感觉枚举用的不太多,最好先把基础打好.

    点赞 评论
  • 沉默的杰克 2017-08-02 08:41

    就两个好处:
    1.方便别人看,你用1,2,3表示谁看的懂
    2.switch方面

    点赞 评论
  • 夕阳雨晴 2017-08-02 09:21
    点赞 评论

相关推荐 更多相似问题