浅析理论:
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; } } }