• 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");

  • 相关阅读:
    【Todo】Java线程面试题 Top 50 (转载)
    【Todo】秒杀系统 & 乐观锁 & Nginx反向代理
    【Todo】C++和Java里面的浮点数及各种数字表示
    asp.net操作word的表格
    Android消息推送(二)--基于MQTT协议实现的推送功能
    单点更新线段树 RMQ
    英语月结
    AppWidget应用(二)---PendingIntent 之 getActivity
    2 WAN 和1 Evo/3g Routeros PCC 方法负载平衡
    Android 网络权限配置
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10852614.html
Copyright © 2020-2023  润新知