Java基础——枚举enum

Java基础——枚举enum一、什么是枚举枚举,顾名思义就是一个个的列出来,和类以及接口是同一个级别的类型,本质就是类(final类)。它用于声明一组命名的常数的集合,当一个变量有几种可能的取值时,可以将它定义为枚举类型。Java中由关键字enum来定义一个枚举类型。定义一个简单的枚举:这个枚举定义了两个常量,分别是EN

大家好,欢迎来到IT知识分享网。Java基础——枚举enum"

一、什么是枚举

枚举,顾名思义就是一个个的列出来,和类以及接口是同一个级别的类型,本质就是类(final类)。它用于声明一组命名的常数的集合,当一个变量有几种可能的取值时,可以将它定义为枚举类型。Java中由关键字enum来定义一个枚举类型。
 

定义一个简单的枚举:

这个枚举定义了两个常量,分别是ENABLE和DISABLE,表示当状态值code为0时所对应的状态名name是开启,当状态值code为1时所对应的状态名name是关闭。
@Getter
@AllArgsConstructor
public enum DemoEnums {

    ENABLE(0, "开启"),
    DISABLE(1, "关闭");

    /**
     * 状态值
     */
    private final Integer code;
    /**
     * 状态名
     */
    private final String name;
}
 
 

二、枚举的特性

  1. 枚举类继承了抽象类Enum的类,extends java.lang.Enum<>
  2. 通过一段静态代码块初始化枚举。
  3. 使用 enum 定义的非抽象的枚举类默认会使用 final 修饰,因此非抽象枚举类不能派生子类(即不能被继承)。
  4. 枚举类的所有实例必须在枚举类的第一行显示列出,否则这个枚举类永远都不可能产生实例。列出的这些实例,系统会自动给它们加上 public static final 修饰。枚举类的实例以逗号分隔,分号结束,这些列出的枚举值代表了该枚举类的所有可能的实例。
  5. 枚举类的构造器只能使用 private 访问控制符,强制指定其他的访问控制符(例如public、procted等)会报错。

三、使用场景

  1. 它通常用于表示一组有关联关系的常量,使代码更加易读、安全。比如一周的天数、月份、季节……
  2. 作为switch的入参( 大大的优化代码的可读性和维护性)
  3. 单例模式的实现
/**
 *一周七天的枚举
 */
public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
/**
 *每月多少天的枚举
 */
public enum Month {
    JANUARY(31),
    FEBRUARY(28),
    MARCH(31),
    APRIL(30),
    MAY(31),
    JUNE(30),
    JULY(31),
    AUGUST(31),
    SEPTEMBER(30),
    OCTOBER(31),
    NOVEMBER(30),
    DECEMBER(31);

    private final int days;

    Month(int days) {
        this.days = days;
    }

    public int getDays() {
        return days;
    }
}
使用
//使用1
Day day = Day.MONDAY;
switch (day) {
    case MONDAY:
        System.out.println("Today is Mondays");
        break;
    case FRIDAY:
        System.out.println("Today is Fridays");
        break;
    default:
        System.out.println("#######");
        break;
} //输出:Today is Mondays

//使用2
Month month = Month.FEBRUARY;
System.out.println("February has " + month.getDays() + " days.");
 //输出:February has 28 days.
 

单例模式举例

枚举单例(Enum Singleton)是实现单例模式的一种新方式,尽管单例模式在java中已经存在很长时间了,但是枚举单例相对来说是一种比较新的概念。
public enum EasySingleton{
    INSTANCE;
}
枚举类的每一个对象都是唯一的,所以一个枚举类中只有一个对象的时候就是单例模式。
//使用
Singleton singleton = Singleton.INSTANCE;
singleton.execute("Do something");
 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27877.html

(0)
上一篇 2023-12-03 16:00
下一篇 2023-12-03 17:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信