zoukankan      html  css  js  c++  java
  • 枚举

    Enum

    • 定义:

    ​ enum是1.5出现的一种类的表现规范,本质上还是一种类,编译器会生成一个类继承自java.lang.Enum

    • 特点:

      1. 因为它的属性是final的,因此一般是大写,由于这种特性,它可以用来处理一些固定的数据
      2. 也可以用来做单例
      3. 创建的资源消耗小于类
      4. 可用于switch(enum)
      5. 它的父类public abstract class Enum<E extends Enum> implements Comparable,
        Serializable。因此它也有int compareTo(T)方法,放在有序集合中是自然排序,等还有其他父类的特性
      6. 不能继承其他的enum,因为编译器会把enum加上final,所以不能继承,也不能继承其他类,因为本身就继承了java.lang.Enum
      7. 如果你要定义自己的方法需要先定义enum的实例,最后加上‘;’,然后才可以定义方法
      8. 可以实现多个接口,不能继承
      9. 实现接口不能写不能写@override
    • api:
      enums values() 返回enum数组,是编译器插入到enum中的,所以当你向上转型时是不能用这个方法的,要用(是Class上的方法)enum.getClass().getEnumConstants()

      enum Search { HITHER, YON }
      
      public class UpcastEnum {
        public static void main(String[] args) {
          Search[] vals = Search.values();
          Enum e = Search.HITHER; // Upcast
          // e.values(); // No values() in Enum
          for(Enum en : e.getClass().getEnumConstants()) {
            System.out.println(en);
          }
        }
      } /* Output:
      HITHER
      YON
      *///:~
      

      ​ int ordinal() 返回它的enum排序index

    switch

    public enum  Enum01 {
        LEFT, RIGHT
    
    }
    
    class EnumTest03 {
        Enum01 enum01;
    
        public EnumTest03(Enum01 enum01) {
            this.enum01 = enum01;
        }
    
        public static void main(String[] args) {
            EnumTest03 enumTest03L = new EnumTest03(Enum01.LEFT);
            EnumTest03 enumTest03R = new EnumTest03(Enum01.RIGHT);
            enumTest03L.description();
            enumTest03R.description();
        }
    
        void description() {
            switch (enum01) {
                case LEFT:
                    System.out.println(enum01);
                    break;
                case RIGHT:
                    System.out.println(enum01);
                    break;
                default:
                    System.out.println("没有这个值");
                    break;
            }
        }
    }
    
    
    
    

    enum例子

    public enum ResponseEnum implements Cloneable, Serializable {
        SUCCESS(200, "成功"),
        FAIL(500, "失败");
    
        private final String str;
        private final int status;
    
        private ResponseEnum(int status, String str) {
            this.status = status;
            this.str = str;
        }
    
        public String getStr() {
            return str;
        }
    
        public int getStatus() {
            return status;
        }
    }
    
    class Test {
        public static void main(String[] args){
            System.out.println(ResponseEnum.SUCCESS);
            System.out.println(ResponseEnum.FAIL);
        }
    }
    /**out:
    SUCCESS
    FAIL
    */
    
  • 相关阅读:
    springboot整合mybatis实现增删改查小案例
    浅谈Nginx负载均衡原理与实现
    使用Cordova框架把Webapp封装成Hybrid App实践——Android篇
    ActiveMQ结合WebScoket应用例子以及介绍
    个人简介
    C#中的属性,字段,变量
    Aspose.Words 直接写response导出docx文档显示文件已损坏需要修复的解决办法
    System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string, string)已过时的解决办法
    Aspose.Words:如何添加另一个WORD文档中的Node对象
    基于CPS变换的尾递归转换算法
  • 原文地址:https://www.cnblogs.com/zpyu521/p/11747949.html
Copyright © 2011-2022 走看看