zoukankan      html  css  js  c++  java
  • java 之 枚举(Enum)

    浅析理论:

    Java枚举(enum)详解:Java声明枚举类型、枚举(enum)类、EnumMap 与 EnumSet
    声明枚举
    声明枚举时必须使用 enum 关键字,然后定义枚举的名称、可访问性、基础类型和成员等。
    任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的范围之内,多个枚举成员之间使用逗号分隔。
    使用枚举还可以使 switch 语句的可读性更强
    Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。
    所有枚举实例都可以调用 Enum 类的方法
    

      

    浅析案例:

    package com.gongxy;
    
    public enum CompanyEnum {
        // 因为已经定义了带参数的构造器,所以在列出枚举值时必须传入对应的参数
        COMPANY("公司", 1),
        OUTSOURCE("外包", 2),
        MICRO_ENTERPRISES("小微企业", 3),
        SUPER_AGENT("超级经纪人", 4);
    
        private String description;
    
        public int getCode() {
            return code;
        }
    
        /*
        public void setCode(int code) {
            this.code = code;
        }
        public void setDescription(String description) {
            description = description;
        }
         */
    
        private int code;
    
        public String getDescription() {
            return description;
        }
        // 定义一个带参数的构造器,枚举类的构造器只能使用 private 修饰
        private CompanyEnum(String description, int code){
            this.description = description;
            this.code = code;
        }
    
        /*
        @Override
        public String toString() {
            return this.description;
        }
         */
    }
    

      

    package com.gongxy;
    
    import java.util.Arrays;
    
    public class EnumTest {
        public static void main(String[] args) {
            commonMethod();
        }
    
        /*
        常用方法
        int compareTo(E o): 该方法用于与制定枚举对象比较顺序,同一个枚举实例只能与相同类型的枚举实例比较。如果该枚举对象位于指定枚举对象之后,则返回正整数;反之返回负整数;否则返回零;
        String name(): 返回此枚举实例的名称,即枚举值 ;
        static values(): 返回一个包含全部枚举值的数组,可以用来遍历所有枚举值;
        String toString(): 返回枚举值的名称,与 name 方法类似,更常用;
        int ordinal(): 返回枚举值在枚举类中的索引值(从0开始),即枚举值在枚举声明中的顺序,这个顺序根据枚举值声明的顺序而定;
        static valueOf(): 返回带指定名称的指定枚举类型的枚举常量,
        名称必须与在此类型中声明枚举常量所用的标识符完全匹配(不允许使用额外的空白字符)。
        这个方法与toString相对应,因此重写 toString() 方法,一定要重写 valueOf() 方法(我们可以重写 toString() 方法,
        但不能自己重写 valueOf() 方法,当我们重写 toString() 方法时,valueOf() 方法会自动重写,不用我们理会。);
        boolean equals()方法: 比较两个枚举类对象的引用。
         */
        static void commonMethod(){
            System.out.println(CompanyEnum.COMPANY.getDescription());//公司
            System.out.println(CompanyEnum.COMPANY.getCode());//1
            System.out.println(CompanyEnum.OUTSOURCE.compareTo(CompanyEnum.COMPANY));//1
            System.out.println(CompanyEnum.OUTSOURCE.compareTo(CompanyEnum.OUTSOURCE));//0
            System.out.println(CompanyEnum.OUTSOURCE.compareTo(CompanyEnum.SUPER_AGENT));//-2
            CompanyEnum[] companyEnums = CompanyEnum.values();
            System.out.println(Arrays.toString(companyEnums));//[COMPANY, OUTSOURCE, MICRO_ENTERPRISES, SUPER_AGENT]
            System.out.println(CompanyEnum.COMPANY.toString());//COMPANY
            System.out.println(CompanyEnum.COMPANY.name());//COMPANY
            System.out.println(CompanyEnum.COMPANY.ordinal());//0
            CompanyEnum companyEnum = CompanyEnum.valueOf("COMPANY");
            System.out.println(companyEnum);//COMPANY[重写toString()返回“公司”]
            System.out.println(CompanyEnum.COMPANY.equals("COMPANY"));//false
            System.out.println(CompanyEnum.COMPANY.equals(companyEnum));//true
            switch(companyEnum){
                case COMPANY:
                    System.out.println(CompanyEnum.COMPANY.getDescription());
                    break;
                case OUTSOURCE:
                    System.out.println(CompanyEnum.OUTSOURCE.getDescription());
                    break;
                case MICRO_ENTERPRISES:
                    System.out.println(CompanyEnum.MICRO_ENTERPRISES.getDescription());
                    break;
                case SUPER_AGENT:
                    System.out.println(CompanyEnum.SUPER_AGENT.getDescription());
                    break;
            }
        }
    }
    

      

  • 相关阅读:
    jQuery EasyUI API 中文文档 数字框(NumberBox)
    jQuery EasyUI API 中文文档 数值微调器(NumberSpinner)
    jQuery EasyUI API 中文文档 日期时间框(DateTimeBox)
    jQuery EasyUI API 中文文档 微调器(Spinner)
    jQuery EasyUI API 中文文档 树表格(TreeGrid)
    jQuery EasyUI API 中文文档 树(Tree)
    jQuery EasyUI API 中文文档 属性表格(PropertyGrid)
    EntityFramework 数据操作
    jQuery EasyUI API 中文文档 对话框(Dialog)
    jQuery EasyUI API 中文文档 组合表格(ComboGrid)
  • 原文地址:https://www.cnblogs.com/gygtech/p/13618288.html
Copyright © 2011-2022 走看看