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/

  • 相关阅读:
    yk20192320
    JS常用方法 限制用户输入的方法
    话说最强悍的团队,博客园团队!
    输入框打开禁用自动填充功能
    老生常谈:Asp.net MVC 3+ Jquery UI Autocomplete实现百度效果
    节日logo
    第一篇:Asp.net MVP模式介绍
    VBS 类
    《JavaScript编程精解》简明读书心得上
    Three.js源码阅读笔记1
  • 原文地址:https://www.cnblogs.com/blachie/p/3654006.html
Copyright © 2011-2022 走看看