广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java枚举enum和Enum类的使用
  • 825
分享到

java枚举enum和Enum类的使用

java枚举enumjavaEnum类 2023-03-02 20:03:32 825人浏览 八月长安

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

摘要

目录一、为什么需要枚举?二、枚举介绍三、枚举的实现方式1.自定义枚举 :2.enum关键字 :四、枚举类补充五、关于枚举类的父类——Enum类1.基本介绍 :

一、为什么需要枚举?

对于某些有固定几个对象的类,比如说星期,月份,季节等等。它们可定义的对象数量是一定的,且不可更改。传统的定义类的方式显然无法满足需求。

二、枚举介绍

枚举全称Enumeration [ˌ ɪnuːməˈ reɪʃn],简称Enum或者enum。枚举是一组常量的集合。枚举类属于一种特殊的类,里面只包含一组有限的特定的对象。枚举的出现可以解决上述的问题。

三、枚举的实现方式

1.自定义枚举 :

步骤 :

①将自定义类的构造器私有化,使其不能被随随便便地new出对象。

②取消类中提供的setXxx方法,仅保留getXxx方法,因为“枚举类”对象仅可读,不能随便修改对于对象的描述。

③直接在自定义类中创建一组对象,使用static + final的组合实现底层优化。并且要对外暴露这组对象,因此要添加public修饰符来公开这组对象。

④枚举对象名通常全部大写,以符合常量的定义规范。

⑤枚举对象根据需要,也可以有多个属性。

演示 :

package knowledge.enum_;
 

public class Week {
    private String name;
 
    private Week(String name) {
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public static final Week SUNDAY = new Week("Sunday");
    public static final Week MONDAY = new Week("Monday");
    public static final Week TUESDAY = new Week("Tuesday");
    public static final Week WEDNESDAY = new Week("Wednesday");
    public static final Week THURSDAY = new Week("Thursday");
    public static final Week FRIDAY = new Week("Friday");
    public static final Week SATURDAY = new Week("Saturday");
 
    @Override
    public String toString() {
        return "Week{" +
                "name='" + name + '\'' +
                '}';
    }
}
 
class Test {
    public static void main(String[] args) {
        System.out.println("一周的第" + 1 + "天是" + Week.SUNDAY);
        System.out.println("一周的第" + 2 + "天是" + Week.MONDAY);
        System.out.println("一周的第" + 3 + "天是" + Week.TUESDAY);
        System.out.println("一周的第" + 4 + "天是" + Week.WEDNESDAY);
        System.out.println("一周的第" + 5 + "天是" + Week.THURSDAY);
        System.out.println("一周的第" + 6 + "天是" + Week.FRIDAY);
        System.out.println("一周的第" + 7 + "天是" + Week.SATURDAY);
    }
}

运行结果 :

2.enum关键字 :

步骤 :

①将自定义类的构造器私有化,使其不能被随随便便地new出对象。

②取消类中提供的setXxx方法,仅保留getXxx方法,因为“枚举类”对象仅可读,不能随便修改对于对象的描述。

③在定义类时,使用enum关键字替换掉class关键字。enum关键字用于声明枚举类。

④创建枚举类对象时,不再和自定义枚举一样使用“public + static + final”关键字的组合形式,而是直接“常量名(形参列表)”搞定。(实际调用的仍然是构造器)。声明枚举对象时,必须明确调用的是哪个构造器。

⑤如果有多个常量对象,使用逗号','间隔即可。最后一个常量后加分号。

⑥如果使用enum来实现枚举,语法规定常量必须写在类的最前面,否则报错。

演示 :

package knowledge.enum_.introduction;
 

public enum Season {
    spring("Spring", "warm"), SUMMER("Summer", "hot"),
    AUTUMN("Autumn", "cool"), WINTER("Winter", "cold");
 
    private String name;
    private String portrait;
 
    private Season(String name, String portrait) {
        this.name = name;
        this.portrait = portrait;
    }
 
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", portrait='" + portrait + '\'' +
                '}';
    }
}
 
class Test2 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);
    }
}

运行结果 :

四、枚举类补充

1.如果使用了enum关键字来声明枚举类,则声明的枚举类默认继承了Enum类,并且底层默认是一个final类。

2.对于“1.”的证明 :

①通过Ctrl + H/h快捷键快速查看继承关系,如下图所示 :

②通过javap命令来证明,如下图所示 :

3.若使用无参构造创建枚举对象,则后面的形参列表和括号都可以省略。如下图所示 :

4.idea中直接创建枚举类的方式 :

与接口类似,也是先按照正常创建类的流程来走,如下图所示 :

选择“Java Class”之后,在弹出的小窗口中选择Enum,然后输入枚举类类名,回车即可,如下图所示 :

创建好枚举类之后,可以看到枚举类的图标中间是一个“E”字母,如下图所示 :

五、关于枚举类的父类——Enum类

1.基本介绍 :

2.常用方法 :

①总览

②演示 :

演示Ⅰ:name方法——得到当前枚举常量的名称。(建议优先使用toString方法)

Season类,Test类代码如下 :

package knowledge.enum_.introduction;
 
public enum Season {
    SPRING("spring", "warm"), SUMMER("summer", "hot"),
    AUTUMN("autumn", "cool"), WINTER("winter", "cold");
 
    private Season() {}
 
    private String name;
    private String portrait;
 
    private Season(String name, String portrait) {
        this.name = name;
        this.portrait = portrait;
    }
 
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", portrait='" + portrait + '\'' +
                '}';
    }
}
 
class Test2 {
    public static void main(String[] args) {
        //1.name
        Season season = Season.SPRING;
        Season season2 = Season.AUTUMN;
        System.out.println("season's name = " + season.name());
        System.out.println("season2's name = " + season2.name());
    }
}

运行结果 :

演示Ⅱ:ordinal方法——返回当前枚举常量对应的编号/次序。(即在枚举类中的定义顺序,第一个枚举常量默认从0开始编号)

Season类代码不变,Test类代码如下 :

class Test2 {
    public static void main(String[] args) {
        //2.ordinal
        Season season = Season.SPRING;
        Season season2 = Season.AUTUMN;
        System.out.println("season's index = " + season.ordinal());
        System.out.println("season2's index = " + season2.ordinal());
    }
}

演示Ⅲ:values方法——可以返回一个当前枚举类型的数组,里面包含了当前枚举类中定义的所有枚举对象。

PS : values方法 是隐藏的底层方法,可以通过javap命令反编译找到,如下图所示 :

Season类代码不变,Test类代码如下 :

class Test2 {
    public static void main(String[] args) {
        //3.values
        Season[] seasons = Season.values();
        for (Season season : seasons) {
            System.out.println(season);
        }
    }
}

运行结果 :

演示Ⅳ:valueOf方法——将指定字符串转换为枚举对象,但要求该指定字符串必须为已有的枚举常量名,否则报异常。

Season类代码不变,Test类代码如下 :

class Test2 {
    public static void main(String[] args) {
        //4.valueOf
        Season season_0 = Season.valueOf("SPRING");
        System.out.println("season_0's name = " + season_0);
 
        Season season_00 = Season.SPRING;
        System.out.println("season_00's name = " + season_00);
 
        System.out.println("season_0 和 season_00本质上是同一个对象吗?" + (season_0 == season_00));
    }
}

运行结果 :

演示Ⅴ:compareTo方法——比较两个枚举常量的编号(返回值= 前编号 - 后编号)。如果返回值是0,说明是同一个枚举常量。

Season类代码不变,Test类代码如下 :

class Test2 {
    public static void main(String[] args) {
        //5.compareTo
        Season season_0 = Season.valueOf("SPRING");
        Season season_00 = Season.SPRING;
        System.out.println(season_0.compareTo(season_00));
        System.out.println("==============");
 
        Season season_2 = Season.AUTUMN;
        System.out.println(season_2.compareTo(season_0));
        System.out.println("==============");
        System.out.println(season_0.compareTo(season_2));
    }
}

运行结果 :

六、关于enum实现接口的问题

1.使用enum关键字声明枚举类之后,该枚举类不可以再去继承其他类。这是因为,我们之前通过javap命令反编译枚举类后,可以看到枚举类在底层隐式继承了Enum类。而Java是单继承机制,不支持多继承。所以在枚举类后使用extends关键字,IDEA会报错,如下图所示 :

2.enum关键字声明的枚举类虽然不能再去继承其他类了,但是可以去实现接口。

演示 :

package knowledge.enum_.port;
 

public enum Season implements Climate {
    SPRING,SUMMER,AUTUMN,WINTER,SEASON;    //别忘记这些枚举常量底层是如何实现的!
    @Override
    public void season_circumstance() {
        System.out.println(SPRING + ": warm");
        System.out.println(SUMMER + ": hot");
        System.out.println(AUTUMN + ": cool");
        System.out.println(WINTER + ": cold");
    }
 
    public static void main(String[] args) {
        Season.SEASON.season_circumstance();
    }
}
 
interface Climate {    
    public abstract void season_circumstance();
}

运行结果 :

到此这篇关于java枚举enum和Enum类的使用的文章就介绍到这了,更多相关java枚举enum和Enum类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java枚举enum和Enum类的使用

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

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

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

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

下载Word文档
猜你喜欢
  • java枚举enum和Enum类的使用
    目录一、为什么需要枚举二、枚举介绍三、枚举的实现方式1.自定义枚举 :2.enum关键字 :四、枚举类补充五、关于枚举类的父类——Enum类1.基本介绍 :2...
    99+
    2023-03-02
    java枚举enum java Enum类
  • java枚举enum和Enum类如何使用
    这篇文章主要介绍“java枚举enum和Enum类如何使用”,在日常操作中,相信很多人在java枚举enum和Enum类如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java枚举enum和Enum类如...
    99+
    2023-07-05
  • java枚举类型-Enum
    目录前言 应用 定义 基本Enum特性 Enum的静态导入 Enum中添加新方法 Switch语句中的Enum Enum的继承 EnumSet的使用 EnumMap的使用 常量相关方...
    99+
    2022-11-12
  • c++枚举类型enum怎么使用
    在C++中,枚举类型(enum)用于定义一组具有离散值的常量。它可以用来提高代码的可读性和可维护性。以下是使用枚举类型的基本语法:`...
    99+
    2023-10-10
    c++
  • mysql枚举类型enum怎么使用
    在MySQL中,枚举类型(enum)用于定义一个可以选择的值列表。enum类型可以在创建表时定义,也可以在已存在的表中添加。下面是创...
    99+
    2023-08-30
    mysql
  • java枚举类型enum用法有哪些
    Java中枚举类型(enum)的用法有以下几种:1. 定义枚举类型:使用关键字"enum"定义枚举类型,并在{}内列出枚举常量。``...
    99+
    2023-08-30
    java
  • java中enum(枚举)的用法详解
    Java Enum原理: public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE };实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。因此,在比较两个枚举类型的值...
    99+
    2020-07-20
    java基础 java enum 用法
  • C#中的枚举类型(Enum)介绍
    枚举(Enum)定义 enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方...
    99+
    2022-11-13
  • Java基础之枚举Enum类案例详解
    目录一、文章序言二、代码实践三、面试相关一、文章序言 Java中引用类型:数组、类、接口、枚举、注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用...
    99+
    2022-11-12
  • Java中枚举类enum的values()方法的详解
    Java中枚举类enum的values()方法的详解 简介: 枚举中的一个特殊方法,values(), 在Enum 的 API 文档中也找不到这个方法,当点击values()时,也会跳到本类上。 此方法可以理解为:将枚举类转变为一个枚举类型...
    99+
    2023-08-18
    java 开发语言 jvm
  • C++中enum枚举如何使用
    这篇文章将为大家详细讲解有关C++中enum枚举如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++ enum枚举格式:enum < 枚举类型名> {< 枚举表&g...
    99+
    2023-06-17
  • 解读C++中枚举(enum)的使用
    目录前言一、枚举是什么二、使用步骤1.作用域2.隐式类型转换3.显式指定枚举值类型4.指定枚举值的值4.整形显式转换成枚举总结前言 对于开发C++来说,枚举是一个几乎必然用到的功能。...
    99+
    2023-03-06
    C++枚举使用 C++枚举 enum C++枚举
  • c语言枚举类型enum怎么用
    本文小编为大家详细介绍“c语言枚举类型enum怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c语言枚举类型enum怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、...
    99+
    2022-10-19
  • mysql枚举类型enum的用法是什么
    MySQL的枚举类型(ENUM)是一种数据类型,用于定义一个可以从预定义的取值列表中选择的列。在创建表时,可以使用ENUM来定义列的...
    99+
    2023-08-21
    mysql
  • 一文带你了解Python枚举类enum的使用
    目录简介初试遍历可哈希访问成员唯一枚举值自动枚举值比较运算功能性APIIntEnumIntFlagFlag简介 枚举是与多个唯一常量绑定的一组符号 因为枚举表示的是常量,建议枚举成员...
    99+
    2022-11-11
  • Java实例讲解枚举enum的实现
    目录一.枚举介绍1.自定义枚举实现(1)示例(2)测试结果2.enum关键字实现枚举(1)示例(2)测试结果3.enum关键字注意事项(1)示例一.枚举介绍 1.枚举是一组常量的集合...
    99+
    2022-11-13
  • PHP8.1新特性Enum像Java一样使用枚举
    了解Java的Php程序员都知道,PHP一直以来是没有Enum这个特性的,虽然有一个扩展的类可以实现类似的功能,但总感觉不是“原生”,刚好现在需要用到PHP8.1版本,这里记录一下对PHP的枚举Enum的简单使用。 先定义一个枚举Trai...
    99+
    2023-10-20
    php 后端
  • Java面向对象之enum枚举类型有什么用
    这篇文章主要为大家展示了“Java面向对象之enum枚举类型有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java面向对象之enum枚举类型有什么用”这篇文章吧。public ...
    99+
    2023-06-02
  • c语言枚举类型enum的用法及应用实例
    目录前言一、枚举的概念二、枚举的几种用法1.直接定义枚举值,然后给普通变量赋值。2.定义带名称的枚举三、定义枚举别名四、枚举有什么用,用在哪里?最后总结:前言 今天跟大家讲一下我在产...
    99+
    2022-11-12
  • 怎么在python中使用enum方法比较枚举
    今天就跟大家聊聊有关怎么在python中使用enum方法比较枚举,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作