广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java枚举类型-Enum
  • 505
分享到

java枚举类型-Enum

2024-04-02 19:04:59 505人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言 应用 定义 基本Enum特性 Enum的静态导入 Enum中添加新方法 Switch语句中的Enum Enum的继承 EnumSet的使用 EnumMap的使用 常量相关方

前言

枚举是 Java1.5 引入的新特性,通过关键字 enum 来定义枚举类。

应用

定义

  • 关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。

enum WeekEnum {
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, weekend
}

基本Enum特性

  • 枚举类的定义

enum WeekEnum {
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, weekend;

    public static void main(String[] args) {
        for (WeekEnum item : WeekEnum.values()) {
            System.out.println(item.ordinal());
            System.out.println(item.name());
            System.out.println(item.getDeclarinGClass());
            System.out.println(Enum.valueOf(WeekEnum.class, item.name()));
        }
    }
}

  • 常用方法
方法 说明
values() 可以遍历enum实例,其返回enum实例的数组
ordinal() 返回每个实例在声明时的次序
name() 返回enum实例声明时的名称
getDeclaringClass() 返回其所属的enum类
Enum.valueOf() 根据给定的名称返回相应的enum实例

Enum的静态导入

  • static import 可以将 enum 实例的标识符带入当前类,无需再用enum类型来修饰 enum 实例

import static com.coisini.SpringBootlearn.WeekEnum.*;

public class WeekEnumTest {

    public static void main(String[] args) {
        System.out.println(Monday.name()); // Monday
        System.out.println(Tuesday.name()); //Tuesday
    }

}

Enum中添加新方法

  • Enum 可以看做是一个常规类(除了不能继承自一个enum),enum 中可以添加方法和 main 方法。

public enum WeekEnum {

    Monday(1, "周一"),
    Tuesday(2, "周二"),
    Wednesday(3, "周三"),
    Thursday(4, "周四"),
    Friday(5, "周五"),
    Saturday(6, "周六"),
    weekend(7, "周天");

    private Integer value;
    private String description;

    
    WeekEnum(Integer value, String description) {
        this.value = value;
        this.description = description;
    }

    
    public Integer getValue() { return this.value; }

    
    public String getDesc() { return this.description; }

    
    public String toString() {
        return this.getValue() + " " + this.getDesc();
    }

    public static void main(String[] args) {
        for (WeekEnum item : WeekEnum.values()) {
            System.out.println(item);
        }
    }

}

Switch语句中的Enum

  • 正确用法

WeekEnum weekEnum = WeekEnum.Friday;

switch (weekEnum) {
   case Friday:
       System.out.println(weekEnum);
       break;
   case Saturday:
       break;
}

  • 错误用法

WeekEnum weekEnum = WeekEnum.Friday;

switch(weekEnum) {
 // An enum switch case label must be the unqualified name of an enumeration constant
   case WeekEnum.Friday:
       break;
   default:
       break;
}

  • 常规情况下必须使用 enum 类型来修饰 enum 实例,但在 case 语句中不必如此。

Enum的继承

  • 所有的enum都继承自java.lang.Enum类,由于Java不支持多重继承,所以enum不能继承其他类,但可以实现一个或多个接口。

public interface Period {

    enum WeekEnum implements Period{
        Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, weekend
    }

    enum MonthEnum implements Period{
        January, February, March, April, May, June
    }
    
    class PeriodTest {
        public static void main(String[] args) {
            Period week = WeekEnum.Friday;
            Period month = MonthEnum.April;

            System.out.println(month + " " + week); // April Friday
        }
    }

}

EnumSet的使用

  • enum 中不能删除和添加元素,Java SE5 引入了EnumSet,其元素必须来自一个 enum 。

import java.util.EnumSet;

enum EnumSetTest {
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, weekend;

    public static void main(String[] args) {
        EnumSet<EnumSetTest> points = EnumSet.noneOf(EnumSetTest.class);
        points.add(Monday);
        System.out.println(points); // [Monday]

        points.addAll(EnumSet.of(Tuesday, Wednesday));
        System.out.println(points); // [Monday, Tuesday, Wednesday]

        points = EnumSet.allOf(EnumSetTest.class);
        System.out.println(points); // [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, weekend]

        points.removeAll(EnumSet.of(Monday, Tuesday));
        System.out.println(points); // [Wednesday, Thursday, Friday, Saturday, weekend]

        points = EnumSet.complementOf(points);
        System.out.println(points); // [Monday, Tuesday]
    }
}

EnumMap的使用

  • EnumMap 是一种特殊的 Map,其 key 值必须来自一个 enum,enum 实例定义的次序决定了其在EnumMap中的顺序。

import java.util.EnumMap;
import java.util.Map;

public enum EnumMapTest {
    MON, TUE, WED, THU, FRI, SAT, WEE;

    public static void main(String[] args) {
        EnumMap<EnumMapTest, String> enumMap = new EnumMap<EnumMapTest, String>(EnumMapTest.class);
        enumMap.put(MON, "Monday");
        enumMap.put(TUE, "Tuesday");

        for (Map.Entry<EnumMapTest, String> em : enumMap.entrySet()) {
            System.out.println(em.geTKEy() + " " + em.getValue()); // MON Monday TUE Tuesday
        }
    }
}

常量相关方法

  • enum 允许为 enum 实例编写方法,为每个 enum 实例赋予不同的行为,要实现常量的相关方法需要为 enum 定义- 实现 abstract 方法。

public enum EnumAbstract {
    MON {
        void getDetail() {
            System.out.println("Monday");
        }
    },
    TUE {
        void getDetail() {
            System.out.println("Tuesday");
        }
    },
    WED {
        void getDetail() {
            System.out.println("Wednesday");
        }
    };

    abstract void getDetail();

    public static void main(String[] args) {
        for (EnumAbstract ea : EnumAbstract.values()) {
            ea.getDetail();
        }
    }

}

枚举值向枚举类型转换


import java.util.stream.Stream;

public enum WeekEnum {

    Monday(1, "周一"),
    Tuesday(2, "周二"),
    Wednesday(3, "周三"),
    Thursday(4, "周四"),
    Friday(5, "周五"),
    Saturday(6, "周六"),
    weekend(7, "周天");

    private Integer value;
    private String description;

    
    WeekEnum(Integer value, String description) {
        this.value = value;
        this.description = description;
    }

    
    public static WeekEnum toWeekEnum(int value) {
        return Stream.of(WeekEnum.values())
                .filter(item -> item.value == value)
                .findAny()
                .orElse(null);
    }

    public static void main(String[] args) {
        System.out.println(WeekEnum.toWeekEnum(1)); // Monday
    }

}

以上就是java枚举类型-Enum的详细内容,更多关于java Enum的资料请关注编程网其它相关文章!

--结束END--

本文标题: java枚举类型-Enum

本文链接: https://www.lsjlt.com/news/133392.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java枚举类型-Enum
    目录前言 应用 定义 基本Enum特性 Enum的静态导入 Enum中添加新方法 Switch语句中的Enum Enum的继承 EnumSet的使用 EnumMap的使用 常量相关方...
    99+
    2022-11-12
  • C#枚举类型与位域枚举Enum
    一、概述 定义一个值类型,其中包含固定值集合。枚举类型变量可以是此集合中的任意一个或多个值。 枚举使用enum关键字来声明,与类同级。 枚举本身可以有修饰符,但枚举的成员始终是公共的...
    99+
    2022-11-13
  • MySQL数据类型enum 枚举类型
    例如: 性别 gender 男 女 保密 基本语法: enum(数据值 1,数据值 2...); 数据值列表在 255 个以内,使用 1 个字节来存储数据值列表超过 255,但是小于...
    99+
    2022-11-13
  • java枚举enum和Enum类的使用
    目录一、为什么需要枚举二、枚举介绍三、枚举的实现方式1.自定义枚举 :2.enum关键字 :四、枚举类补充五、关于枚举类的父类——Enum类1.基本介绍 :2...
    99+
    2023-03-02
    java枚举enum java Enum类
  • java枚举类型enum用法有哪些
    Java中枚举类型(enum)的用法有以下几种:1. 定义枚举类型:使用关键字"enum"定义枚举类型,并在{}内列出枚举常量。``...
    99+
    2023-08-30
    java
  • java枚举enum和Enum类如何使用
    这篇文章主要介绍“java枚举enum和Enum类如何使用”,在日常操作中,相信很多人在java枚举enum和Enum类如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java枚举enum和Enum类如...
    99+
    2023-07-05
  • c++枚举类型enum怎么使用
    在C++中,枚举类型(enum)用于定义一组具有离散值的常量。它可以用来提高代码的可读性和可维护性。以下是使用枚举类型的基本语法:`...
    99+
    2023-10-10
    c++
  • C#中的枚举类型(Enum)介绍
    枚举(Enum)定义 enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方...
    99+
    2022-11-13
  • mysql枚举类型enum怎么使用
    在MySQL中,枚举类型(enum)用于定义一个可以选择的值列表。enum类型可以在创建表时定义,也可以在已存在的表中添加。下面是创...
    99+
    2023-08-30
    mysql
  • c语言枚举类型enum怎么用
    本文小编为大家详细介绍“c语言枚举类型enum怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c语言枚举类型enum怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、...
    99+
    2022-10-19
  • 【Java】枚举类型
    文章目录 一、枚举类型1.1 什么是枚举类型1.2 Java中枚举类型的特点 二、枚举类型的使用2.1 创建语法2.2 常用方法2.3 使用案例 三、枚举的优缺点 一、枚举类型 ...
    99+
    2023-09-02
    java enum 枚举
  • mysql枚举类型enum的用法是什么
    MySQL的枚举类型(ENUM)是一种数据类型,用于定义一个可以从预定义的取值列表中选择的列。在创建表时,可以使用ENUM来定义列的...
    99+
    2023-08-21
    mysql
  • Java面向对象之enum枚举类型有什么用
    这篇文章主要为大家展示了“Java面向对象之enum枚举类型有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java面向对象之enum枚举类型有什么用”这篇文章吧。public ...
    99+
    2023-06-02
  • Java基础之枚举Enum类案例详解
    目录一、文章序言二、代码实践三、面试相关一、文章序言 Java中引用类型:数组、类、接口、枚举、注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用...
    99+
    2022-11-12
  • Java枚举enum如何实现
    这篇文章主要介绍“Java枚举enum如何实现”,在日常操作中,相信很多人在Java枚举enum如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java枚举enum如何实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-02
  • Java中枚举类enum的values()方法的详解
    Java中枚举类enum的values()方法的详解 简介: 枚举中的一个特殊方法,values(), 在Enum 的 API 文档中也找不到这个方法,当点击values()时,也会跳到本类上。 此方法可以理解为:将枚举类转变为一个枚举类型...
    99+
    2023-08-18
    java 开发语言 jvm
  • C++枚举解读(enum)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、枚举是什么?二、使用步骤1.作用域2.隐式类型转换3.显式指定枚举值类型4.指定枚举值的值4.整形显式...
    99+
    2023-09-02
    c++ java 数据结构 linux 开发语言
  • Python深入浅出分析enum枚举类
    目录枚举类Enum总结枚举类Enum 枚举类,在企业开发中用的比较多 当我们需要定义常量时,一个办法是用大写的变量通过整数来定义,例如月份: # 当项目中需要使用12个月份时JAN ...
    99+
    2022-11-11
  • java中enum(枚举)的用法详解
    Java Enum原理: public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE };实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。因此,在比较两个枚举类型的值...
    99+
    2020-07-20
    java基础 java enum 用法
  • TypeScript枚举类型
    目录1.概述2.数字枚举2.1反向映射3.字符串枚举4.const枚举5.总结1.概述 所谓的枚举类型就是为一组数值赋予名字。 enum类型在C++、Java语言中比较常见,Typ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作