抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

枚举简介

枚举是java1.5引入的一个新特性,它继承于java.lang.Enum类。我们使用枚举来替换常量。例如下面是一个B站视频状态的枚举类,以这种方式定义的常量使代码更具可读性,允许进行编译时检查,预先记录可接受值的列表,并避免由于传入无效值而引起的意外行为。

1
2
3
4
5
6
7
8
package com.example.item.constant;

/**
* 创建在 2020/5/30 21:18
*/
public enum VideoPublishStatus {
DRAFT,AUDIT,PUBLISH
}

在这里我定义了三个视频状态,分别是草稿(draft),审核(audit),发布(publish)。如果我们不用枚举会怎么样呢?下面是一个处理视频发布的方法,它不使用枚举做为方法参数。

1
2
3
public void handlerVideoStatus(int status){
//假装是代码
}

这个方法如方法名一样就是处理一下视频的状态,这里参数的理想状态是VideoPublishStatus的任意一种,但是由于没有类型参数限制,这里传啥都行。
如果使用枚举来传参就会有更明显的意图和安全性了。

枚举基本用法

values()返回所有枚举常量的数组集合

1
2
3
4
5
6
7
8
for (VideoPublishStatus status:VideoPublishStatus.values()){
System.out.println(status);
}
/* 输出
DRAFT
AUDIT
PUBLISH
*/

ordinal()返回枚举常量定义序数从0开始

1
2
3
4
5
6
7
8
for (VideoPublishStatus status:VideoPublishStatus.values()){
System.out.println(status.ordinal());
}
/* 输出
0
1
2
*/

valueOf()返回指定名称的枚举常量

1
2
3
VideoPublishStatus.valueOf("DRAFT");
VideoPublishStatus.valueOf("AUDIT");
VideoPublishStatus.valueOf("PUBLISH");

枚举常用使用场景

常量定义

switch

单例模式

策略模式