首页 > 编程语言 >JavaSE5️⃣核心类 - 枚举(enum)

JavaSE5️⃣核心类 - 枚举(enum)

时间:2023-02-26 22:57:05浏览次数:40  
标签:JavaSE5 int Season enum final 枚举 SPRING public

1、枚举

1.1、含义

维基百科

在数学和计算机科学理论中,一个集的枚举是指:

  1. 列出有穷序列集的所有成员的程序。
  2. 一种特定类型对象的计数。

这两种类型经常重叠,是一个被命名的整型常数的集合。

1.2、int 常量

在 Java 5 之前,可定义 int 常量来表示枚举。

示例:定义季节。

public class Season {
    public static final int SPRING = 0;
    public static final int SUMMER = 1;
    public static final int AUTUMN = 2;
    public static final int WINTER = 3;
}

class Main {
    public static void doSomething(int season){
        if (season == Season.SPRING) {
            // ...
        }
    }
}

存在问题

  1. 安全性:编译器无法检查传入值的合法性(类型、范围)。
  2. 可读性:int 常量的输出结果是数字,无法表示常量的特点。

2、enum

Java 5+

枚举(enumeration):表示一组预定义的常量

  1. 使用关键字 enum,定义不同的枚举类。
  2. 编译器能自动检查枚举类型、某个引用值是否属于枚举集合内。

2.1、语法

按以下顺序声明一个枚举类。

  1. 声明枚举类,可实现接口
  2. 声明成员变量(如果需要)。
  3. 声明构造方法(如果需要)。
  4. 声明枚举成员
    1. 使用 () 填写参数列表(若调用空参构造方法,可省略括号)。
    2. 使用 , 分隔多个枚举成员,使用 ; 结束常量声明。

示例

  1. 定义枚举类

    public enum Season {
        SPRING(0, "春天"),
        SUMMER(1, "夏天"),
        AUTUMN(2, "秋天"),
        WINTER(3, "冬天"),
        ;
    
        public final int order;
        public final String value;
    
        Season(int order, String value) {
            this.order = order;
            this.value = value;
        }
    }
    
  2. 编译后相当于

    public final class Season extends Enum {
        public static final Season SPRING = new Season(0, "春天");
        public static final Season SUMMER = new Season(1, "夏天");
        public static final Season AUTUMN = new Season(2, "秋天");
        public static final Season WINTER = new Season(3, "冬天");
    
        public final int order;
        public final String value;
    
        private Season(int order, String value) {
            this.order = order;
            this.value = value;
        }
    }
    

2.2、特点

2.2.1、成员变量

Enum 定义的 2 个成员变量

  1. name:枚举成员的名称
  2. ordinal:枚举成员的序号,即声明的位置顺序。
    1. 从 0 开始计数。
    2. 新增的枚举需要放在后面,避免影响前面枚举的序号。

2.2.2、引用类型

enum 的本质是 class,拥有类的特性。

  1. 继承:默认继承自 java.lang.Enum,无法被继承。
  2. 实现:可实现一个或多个接口。
  3. 成员结构:除了枚举常量,enum 可以定义类的其它结构。
    1. 构造方法(默认 private
      1. 私有化,避免外部实例化新的枚举类型
      2. 若无显式定义构造方法,默认会生成无参构造方法。
    2. 成员变量:建议 final,并通过构造器初始化。
    3. 成员方法等其它结构。

2.2.3、单实例

参考

标签:JavaSE5,int,Season,enum,final,枚举,SPRING,public
From: https://www.cnblogs.com/secretmrj/p/17158100.html

相关文章

  • JavaScript 枚举对象中的属性
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> varobj={ name:"孙悟空", age:1......
  • 蓝桥杯备战日志(Python)18-第几个幸运数字-(枚举只含某些因子的整数)
    第几个幸运数字原题到X星球旅行的游客都被发给一个整数,作为游客编号。X星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7就可以获得一......
  • python enumerate
    ​​enumerate​​(iterable, start=0)Returnanenumerateobject. iterable mustbeasequence,an ​​iterator​​​,orsomeotherobjectwhichsupportsiter......
  • 考研算法辅导课笔记:第十七讲--枚举和位运算
    这节课主要讲枚举,位运算成员函数booloperator<(constRange&b)const{};括号中的const表示参数b对象不会被修改;在函数末尾加CONST这样的函数叫常成员函数。常成员函......
  • C# 自定义枚举类型转换
    //stringtoenumEAccountRolevar=(EAccountRole)Enum.Parse(typeof(EAccountRole),RoleManage.Instance.CurrentAccount.Role); //enumtolistpublicIEnumer......
  • swagger添加枚举注释
    第一步,添加swagger过滤器1publicclassEnumSchemaFilter:ISchemaFilter2{3publicvoidApply(OpenApiSchemamodel,SchemaFilterContextconte......
  • java 枚举使用
    /***埋点模块枚举*@authorhuang*/publicenumModelEnum{PROCESS_CONTROL("流程管控",10),TASK_CENTER("任务中心",20),QHSE("QHSE管理",30)......
  • java后台接收参数为枚举,postman的json如何传入
    使用postman测试接口,其中一个参数为枚举类型,如何传入参数?1枚举类型:publicenumUserCourseOrderSourceType{USER_BUY(1,"用户下单购买"),OFFLINE_BUY(2,"后台......
  • java枚举Enum与Enumeration源码详解
    java枚举Enum与Enumeration源码详解类的定义publicabstractclassEnum<EextendsEnum<E>>implementsComparable<E>,Serializable{}属性定义privatefinalStr......
  • Java 扫描枚举类并获取属性
    Java扫描枚举类并获取属性文章目录​​Java扫描枚举类并获取属性​​​​第一步:在pom.xml下导入hutool和commons-lang3​​​​第二步:写一个接口以规范枚举的属性​......