长生的梦呓


  • 归档
  • 算法
  • 基础
  • 关于

  • 分类
  • 日志
  • Servlet
  • Archive
  • 数据结构
  • IO 流

  • 标签
  • 友链
  • MyBatis
  • About
  • Spring 5
  • Java SE
  • Java EE
  • Algorithms
  • 新特性
  • 位运算技巧

  • 搜索
内网穿透 项目实战 数据库 MySQL 安卓踩坑 开发工具 设计模式 Enum 枚举 Linux MyBatis-plus JSON IDEA Transactions AOP IO 流 DP IoC 与 DI 位运算技巧 工具类 学习技巧 Git JDK 排序 Spring Boot Spring MVC Spring Framework MyBatis Log4J Regex Jsoup JDBC 数据结构 递推 递归 算法 Servlet与JSP 小难 中等 简单

【Java 基础】枚举(Enum)的使用

发表于 2020-04-25 | 2 | 阅读次数 440

前言

在JDK 5 之前,我们定义常量都是: public static fianl.... 。

JDK 5 之后,枚举(Enum)引入了。我们可以使用枚举定义定义常量。

一、枚举

1.什么是枚举?

可以将枚举看成一种特殊的类,他的声明的变量默认就有“public static fianl”修饰。

枚举都是继承自“java.lang.Enum”类。

作用:当需要定义一组常量时,可以使用枚举类型

2.枚举使用

2.1 语法

创建枚举类需要使用“enum”关键字。创建的常量用逗号分隔。

enum 枚举名字 {
    枚举体(常量列表)
}
2.2 基本使用

例如,定义一组季节(Season)的常量。最常使用这个。

如果需要使用时,只需要“枚举类名.属性名”即可,返回值是常量的名称(也就是属性名)。

public enum SeasonEnum {
    SPRING, SUMMER, AUTUMN, WINTER
}
2.3 其他使用方法

给枚举属性添加一个值,该值表示枚举值为第几个季节。

注意:枚举体(属性)添加了“常量列表”,需要创建一个值,同时给该值一个构造器。

public enum SeasonEnum {
    SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4);

    private int ordinal;

    SeasonEnum(int ordinal) {
        this.ordinal = ordinal;
    }

    /** 获取序数(也就是第几个季节) */
    public int getOrdinal() {
        return ordinal;
    }
}

测试:获取枚举常量名称,枚举的次序,枚举的值。

可以通过“name()”和“ordinal()”方法获取值。(方法继承自枚举类的父类Enum)

SeasonEnum spring = SeasonEnum.SPRING;
System.out.printf("枚举常量的名称:%s\n枚举常数的序数:%s \n", spring.name(), spring.ordinal());
ystem.out.printf("枚举的值:%s", spring.getSequence());

输出:"SPRING"代表枚举的名称,"0"代表当前枚举在第一个位置(下标0),"1"代表他的值为1

枚举常量的名称:SPRING
枚举常数的序数:0 
枚举的值:1
2.4 备注

枚举类还有一个values()方法,可以用来获取枚举类的所有枚举属性。

例如:SeasonEnum.values()。(可以获取枚举类SeasonEnum的所有属性)

3.枚举与普通类对比

  • 枚举类默认继承java.lang.Enum类。
  • 枚举类的构造器默认使用private修饰,枚举的构造器只在构造枚举值时被调用。
  • 枚举类的所有枚举值都是“public static final ”修饰的

4.阿里巴巴枚举使用规范

4.1 命名风格
  • 17.【参考】枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
  • 说明:枚举其实就是特殊的类,域成员均为常量,且构造方法被默认强制是私有。
  • 正例:枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON。

参考:《阿里巴巴Java开发手册(华山版)》

4.2 常量定义
  • 5.【推荐】如果变量值仅在一个固定范围内变化用 enum 类型来定义。
  • 说明:如果存在名称之外的延伸属性应使用 enum 类型,下面正例中的数字就是延伸信息,表示一年中的
    第几个季节。

正例:

public enum SeasonEnum {
 SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4);
 private int seq;
 SeasonEnum(int seq) {
 this.seq = seq;
 }
 public int getSeq() {
   return seq;
 }
}

参考:《阿里巴巴Java开发手册(华山版)》

参考

《阿里巴巴Java开发手册(华山版)》

Java高级特性-枚举

Java 枚举(enum) 详解7种常见的用法

  • 本文作者: 长生的梦呓
  • 本文链接: https://shengjava.com/archives/java基础枚举enum的使用
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 内网穿透 # 项目实战 # 数据库 # MySQL # 安卓踩坑 # 开发工具 # 设计模式 # Enum # 枚举 # Linux # MyBatis-plus # JSON # IDEA # Transactions # AOP # IO 流 # DP # IoC 与 DI # 位运算技巧 # 工具类 # 学习技巧 # Git # JDK # 排序 # Spring Boot # Spring MVC # Spring Framework # MyBatis # Log4J # Regex # Jsoup # JDBC # 数据结构 # 递推 # 递归 # 算法 # Servlet与JSP # 小难 # 中等 # 简单
【Linux 学习】基础学习(大纲)
单例模式
  • 文章目录
  • 站点概览
长生的梦呓

长生的梦呓

110 日志
39 分类
40 标签
RSS
E-mail CSDN
Creative Commons
Links
  • CSDN 地址
  • waltz26
  • Ryan Wang's Blog
  • JohnNiang's Blog
  • 廖雪峰
  • 菜鸟教程
© 2021 长生的梦呓
浙ICP备20005262号-1