• java枚举学习enum


    java 1.5以后才出现enum的关键字

    所有的enum类都继承自Enum类,所以enum类无法再继承其他的类,可以实现接口,枚举类出了不能被继承其余的与普通类的特性一致,

    枚举类的构造函数只能自己类内使用

    enum类在编译阶段,编译器会把其编译成普通的类,添加values与valueof静态方法

    enum MM{YOU,ME}

    javap 该类后结果如下

    final class MM extends java.lang.Enum{
        public static final MM YOU;
        public static final MM ME;
        static {};
        public static MM[] values();
        public static MM valueOf(java.lang.String);
    }

    我们可以看的其变成了最终类所以不可以被继承,添加了values和valueof静态方法

    看一个实现接口的例子

    接口

    public interface IMM {
        public void m();
    }

    枚举类

    enum MM implements IMM {
        YOU("SD") {
            @Override
            public void m() {
                System.out.println("you");
    
            }
        },
        ME("fdsa");
        MM(String a) {
            m = a;
        }
    
        private String m;
    
        public String getA() {
            return m;
        }
    
        @Override
        public void m() {
            System.out.println("main");
    
        }
    }

    java p 反编译后

    class MM extends java.lang.Enum implements IMM{
        public static final MM YOU;
        public static final MM ME;
        static {};
        public java.lang.String getA();
        public void m();
        public static MM[] values();
        public static MM valueOf(java.lang.String);
        MM(java.lang.String, int, java.lang.String, MM);
    }

    但是重载的方法m,类是如何知道的呢

    使用接口组织枚举,来解决无法从enum继承子类

    在一个接口的内部创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类组织的目的。

    public interface Food {
        enum dezzert implements Food {
            D, E, F;
        }
    
        enum water implements Food {
            W, R, T;
        }
    
        enum Appetize implements Food {
            A, B, C;
        }
    }

    资料:

    http://blog.jobbole.com/31597/

  • 相关阅读:
    jmeter 数据库类型的脚本
    jmeter 协议到脚本编写
    python socket粘包
    微信公众号开发
    常用windows和office激活工具
    分辨率等概念
    设置单元格同高或同宽
    单元格内容前或后增加内容
    单元格内数字复制和递增
    excel单元格内容换行
  • 原文地址:https://www.cnblogs.com/blachie/p/3654006.html
Copyright © 2020-2023  润新知