Java基础学习(二十)

Java基础学习(二十):枚举

本文为个人学习记录,内容学习自 韩顺平Java


概念

  • 枚举:enumeration,简写为 enum
  • 枚举是一组常量的集合

枚举的实现

  • 枚举有两种实现方式:自定义类实现枚举、使用 enum 关键字实现枚举

  • 自定义类实现枚举

    • 步骤:

      1. 新建 Javabean 文件
      2. 将构造器私有化:防止直接创建类的实例
      3. 不需要 setXxx() 方法:防止枚举对象的属性被修改
      4. 在类内直接创建固定的对象,即枚举对象
      5. (可选)使用 final 修饰符修饰创建的枚举对象
      6. 调用枚举对象时直接:枚举类.枚举对象
    • 示例:自定义 Season 类,定义四个季节常量

      public class Season {
          // 枚举对象的属性
          private String name;
          private String desc;
      
          // 枚举对象:SPRING、SUMMER、AUTUMN、WINTER
          public static final Season SPRING = new Season("春天", "温暖");
          public static final Season SUMMER = new Season("夏天", "炎热");
          public static final Season AUTUMN = new Season("秋天", "凉爽");
          public static final Season WINTER = new Season("冬天", "寒冷");
      
          private Season(String name, String desc) {
              this.name = name;
              this.desc = desc;
          }
      
          public String getName() {
              return name;
          }
      
          public String getDesc() {
              return desc;
          }
      }
      
  • 使用 enum 关键字实现枚举

    • 步骤:

      1. 使用关键字 enum 替代 class

      2. public static final Season SPRING = new Season("春天", "温暖");    <==>   SPRING("春天", "温暖");
        
      3. 如果有多个枚举对象,需要使用逗号间隔,最后一个使用分号结尾

      4. 定义枚举对象的语句必须放在最前面

      5. 调用枚举对象时直接:枚举类.枚举对象

    • 示例:

      enum Season {
          // 枚举对象:SPRING、SUMMER、AUTUMN、WINTER
          SPRING("春天", "温暖"), SUMMER("夏天", "炎热"), AUTUMN("秋天", "凉爽"), WINTER("冬天", "寒冷");
      
          private String name;
          private String desc;
      
          private Season(String name, String desc) {
              this.name = name;
              this.desc = desc;
          }
      
          public String getName() {
              return name;
          }
      
          public String getDesc() {
              return desc;
          }
      }
      
    • 注意事项:

      • 使用 enum 定义一个枚举类时,默认继承自 Enum 类,因此不能再继承其他类了

      • 使用 enum 定义的枚举类仍然是一个类,可以实现接口

      • 如果枚举常量是通过无参构造器创建的,那么小括号可以省略,例如:

        SPRING();    <==>    SPRING;
        

Enum 类

  • 路径:java.lang.Enum

  • 常用方法:

    class Test {
        public static void main(String[] args) {
            Season autumn = Season.AUTUMN;
            
            // name():返回该枚举对象的名字
            String name = autumn.name();
            // ordinal():返回该枚举对象的次序/编号,从0开始
            int index = autumn.ordinal();
            // values():返回所有的枚举对象
            Season[] values = Season.values();
            // valueOf():根据字符串获取枚举对象
            Season autumn1 = Season.valueOf("AUTUMN");
            // compareTo():对两个枚举对象的编号进行比较,返回值为二者编号的差值
            int result = autumn.compareTo(Season.SUMMER);
        }
    }
    
posted @   victoria6013  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示