zoukankan      html  css  js  c++  java
  • Java 枚举7常见种用法

    DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

    用法一:常量

    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

  • 相关阅读:
    对于.net config文件中加密使用
    删除windows不想要的服务
    ora12514: tns: 监听程序当前无法识别连接描述符中请求的服务
    读《.NET设计规范》笔记
    创建服务总结
    加载XML文档
    XMLHttpRequest对象的使用
    ReportView控件的使用
    C#代码的编译过程
    Qt vs设置可执行程序图标
  • 原文地址:https://www.cnblogs.com/crazylqy/p/5650766.html
Copyright © 2011-2022 走看看