zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    net5:动态修改内存中的站点地图节点
    手动创建DataTable并绑定gridview
    文件转换成二进制流及二进制流转换成文件
    XML 增、删、改和查的实例【转】
    免费CSS鼠标样式代码大全
    C#连接数据库SQL(2005)
    关于hibernate4.3版本之后org.hibernate.service.ServiceRegistryBuilder被弃用
    史上最全的Maven Pom文件标签详解
    Readme.MD 例子
    GitHub中README.md文件的编辑和使用
  • 原文地址:https://www.cnblogs.com/blachie/p/3654006.html
Copyright © 2011-2022 走看看