• 技术文章 >Java >Java基础

    java中enum(枚举)的用法详解

    王林王林2019-11-27 15:49:34转载1404

    Java Enum原理:

    public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE };

    实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。

    因此,在比较两个枚举类型的值时,永远不需要调用equals方法,而直接使用"=="就可以了。(equals()方法也是直接使用==, 两者是一样的效果)

    相关视频教程推荐:java教学视频

    用法一:常量

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

    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 class Test {
        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 static void main(String[] args) {
            System.out.println(Color.RED.toString());
        }
    }

    用法五:实现接口

    所有的枚举都继承自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入门

    以上就是java中enum(枚举)的用法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:java enum 用法
    上一篇:java类加载器ClassLoader详解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java中实现线程安全的方式有哪些• java中List集合去重的方式有哪些• 关于java中的Lambda表达式的详细介绍• java中的容器类有哪些
    1/1

    PHP中文网