Java 枚举类

实例有限且固定的类,叫做枚举类。比如季节只有“春”、“夏”、“秋”、“冬”。

在早期,直接使用静态常量表示枚举:
public static final String SPRING="春";
public static final String SUMMER="夏";

在Java5.0之中新增了一个枚举类:
修饰符 enum 枚举类名{
.......
}
枚举类是一种特殊的类,和类、接口一个级别。在枚举类中可以有成员变量、方法、构造器,也可以实现一个或多个接口。
一个.java文件中,最多只能定义一个public(枚举)类。

非抽象的枚举类自动使用final修饰,不能派生子类。
枚举类的构造器只能使用private修饰。
必须在枚举类的第一行显示列出该枚举类的所有实例。这些实例默认使用public static final修饰,无需显示指定。

public enum SeasonEnum{
//此枚举类的所有实例,以逗号分隔。默认使用public static final修饰
SPRING,SUMMER,AUTUMN,WINTER;
}
public class Test{
  public void test(SeasonEnum enum){
    switch(enum){
    case SPRING:
      .......;
    case SUMMER:
      ........;
    case AUTUMN:
      .......;
    case WINTER:
      ........;

  }
}

  public void main(String[] args){
  //枚举类.values() 获取该枚举类的所有实例,以数组形式返回。数据类型:枚举类[]
  for(SeasonEnum s:SeasonEnum.values()){
    //可通过 枚举类类名.实例名 访问枚举实例,值为该枚举实例变量的变量名
    System.out.println(SeasonEnum.s); //输出SPRING、SUMMER、AUTUMN、WINTER
  }
  System.out.println(SeasonEnum.SPRING); //输出SPRING
  }
}

public enum Gender{
  //有构造器时,枚举实例必须调用相应的构造器来创建。实例名为MAIL,FEMAIL
  MAIL("男"),FEMALE("女");
  //枚举类的成员变量通常不可改变,建议使用private final修饰
  private final String name; //这个成员变量是对枚举实例的说明
  //枚举类的构造器默认(也只能)使用private修饰
  private Gender(String name){
    this.name=name;
  }
  public String getName(){
    return this.name;
  }
  public void setName(String name){
    this.name=name;
  }
}

所有的枚举类都继承了Enum类,Enum常用的一个静态方法:
Gender g=Enum.valueOf(Gender.class,"MAIL"); //获取指定的枚举实例,第一个参数指定枚举类,第二个参数指定实例名(String类型)。g的值为MAIL。
也可以这样:
Gender g=Gender.valueOf("MAIL"); //用具体的枚举类,不用指定枚举类的类名

String str=g.getName(); //调用枚举实例的方法,"男"
g.setName("xxx");

原文地址:https://www.cnblogs.com/chy18883701161/p/10852614.html