枚举(enum)

2023-05-16

一.什么是枚举

我们学习过单例模式,即一个类只有一个实例。而枚举其实就是多例,一个类有多个实例,但实例的个数不是无穷的,是有限个数的。例如word文档的对齐方式有几种:左对齐、居中对齐、右对齐。开车的方向有几种:前、后、左、右!我们称呼枚举类中实例为枚举项!一般一个枚举类的枚举项的个数不应该太多,如果一个枚举类有30个枚举项就太多了!

二.定义枚举类型

注意,定义枚举类的关键字是enum,而不是Enum,所有关键字都是小写的
其中FRONT、BEHIND、LEFT、RIGHT都是枚举项,它们都是本类的实例,本类一共就只有四个实例对象。
在定义枚举项时,多个枚举项之间使用逗号分隔,最后一个枚举项后需要给出分号!但如果枚举类中只有枚举项(没有构造器、方法、实例变量),那么可以省略分号!建议不要省略分号!
不能使用new来创建枚举类的对象,因为枚举类中的实例就是类中的枚举项,所以在类外只能使用类名.枚举项。

三.枚举与switch

四.所有枚举类都是Enum的子类

五.枚举类的构造器

枚举类也可以有构造器,构造器默认都是private修饰,而且只能是private。因为枚举类的实例不能让外界来创建!

enum Direction {
    FRONT, BEHIND, LEFT, RIGHT;//[在枚举常量后面必须添加分号,因为在枚举常量后面还有其他成员时,分号是必须的。枚举常量必须在枚举类中所有成员的上方声明。]
    
    Direction()//[枚举类的构造器不可以添加访问修饰符,枚举类的构造器默认是private的。但你自己不能添加private来修饰构造器。] {
        System.out.println("hello");
    }
}

其实创建枚举项就等同于调用本类的无参构造器,所以FRONT、BEHIND、LEFT、RIGHT四个枚举项等同于调用了四次无参构造器,所以你会看到四个hello输出。

六.枚举类可以有成员

其实枚举类和正常的类一样,可以有实例变量,实例方法,静态方法等等,只不过它的实例个数是有限的,不能再创建实例而已。

七.枚举类中还可以有抽象方法

还可以在枚举类中给出抽象方法,然后在创建每个枚举项时使用“特殊”的语法来重复抽象方法。所谓“特殊”语法就是匿名内部类!也就是说每个枚举项都是一个匿名类的子类对象!通常fun()方法应该定义为抽象的方法,因为每个枚举常量都会去重写它。
你无法把Direction声明为抽象类,但需要声明fun()方法为抽象方法。

enum Direction {
    FRONT() {
        public void fun() {
            System.out.println("FROND:重写了fun()方法");
        }
    }, 
    BEHIND() {
        public void fun() {
            System.out.println("BEHIND:重写了fun()方法");
        }
    }, 
    LEFT() {
        public void fun() {
            System.out.println("LEFT:重写了fun()方法");
        }
    },
    RIGHT() {
        public void fun() {
            System.out.println("RIGHT:重写了fun()方法");
        }
    };
    
    public abstract void fun()[只需要把fun()方法修改为抽象方法,但不可以把Direction类声明为抽象类。];
}

八.每个枚举类都有两个特殊方法

九.实例

package com.vkeline.multicheck.constant;

/**
 * <p>
 * 枚举测试
 * </p>
 *
 * @author Longchengbin
 * @since 2020-7-17 14:32
 **/
public enum EnumTest {
    ONE("aa", "test1", 33),
    TWO("bb", "test2", 66),
    Three("cc", "test3", 99);
    private String a;
    private String b;
    private int c;

    EnumTest(String a, String b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    @Override
    public String toString() {
        return "EnumTest{" +
                "a='" + a + '\'' +
                ", b='" + b + '\'' +
                ", c=" + c +
                '}';
    }

    /**
     * @author Longchengbin
     * @description 通过a获取枚举对象
     * @since 2020-7-17 14:54
     **/
    public static EnumTest fromA(String a) {
        for (EnumTest enumTest : EnumTest.values()) {
            if (a.equals(enumTest.getA())) {
                return enumTest;
            }
        }
        return null;
    }

    /**
     * @author Longchengbin
     * @description 通过名字获取枚举对象
     * @since 2020-7-17 15:13
     **/
    public static EnumTest fromName(String name) {
        return EnumTest.valueOf(name);
    }

    public String getA() {
        return a;
    }

}

十.参考网站

https://blog.csdn.net/newbie_907486852/article/details/81027512

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举(enum) 的相关文章

  • Enum枚举前后端传输展示方案

    1 定义枚举类型 public enum RolesTypeEnum implements Enumerator MANAGER 34 管理员 34 0 BUSINESS 34 招商员工 34 1 PROPERTY 34 物业员工 34 2
  • c++ enum class转int

    示例 enum class 定义 span class token keyword enum span span class token keyword class span span class token class name Colo
  • C#中的枚举 Enum和enum的区别

    枚举类型本质上是一个字典 xff0c 它将一组字符串映射到一组整数值 每个枚举常量都具有一个关联的整数值 xff0c 默认情况下 xff0c 第一个枚举常量的值为 0 xff0c 后续枚举常量的值会自动加 1 C 中有两种枚举类型 xff1
  • C#中Enum枚举类型的简单使用

    枚举类型的介绍 xff1a 枚举类型是由一组特定常量构成的一组数据结构 xff0c 是值类型的一种特殊形式 xff0c 当需要一个由指定常量集合组成的数据类型时 xff0c 使用枚举类型 枚举声明可以显式地声明 byte sbyte sho
  • c语言enum枚举字符串,c语言enum使用_enum枚举变量

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 二 enum枚举 1 枚举的定义 枚举类型定义的一般形式为 xff1a enum 枚举名 枚举值表 在枚举值表中应罗列出所有可用值 这些值也称为枚举元素 例如 xff1a 该枚举名为weekda
  • C#枚举(Enum)

    枚举是直接在命名空间 类或结构中使用 enum 关键字定义的 所有常量名都可以在大括号内声明 xff0c 并用逗号分隔 下面定义了工作日的枚举 示例 xff1a 定义一个枚举 enum WeekDays Monday Tuesday Wed
  • C++枚举类型enum使用方法(附带可用代码+通俗易懂)

    1 说明 枚举用来表示某类事情的结果 xff1b 例1 xff1a 下棋比赛的三种结果 xff0c 赢 xff0c 和 xff0c 输 xff1b 这里是描述比赛的结果 例2 xff1a 一周7天中的俩种结果 xff0c 工作日和非工作日
  • enum to string c++17 Magic Enum

    Magic Enum header only library provides static reflection for enums to string from string iteration for C 43 43 17 c 43
  • C#语法小知识(三)枚举类型enum

    枚举类型声明一系列常数 xff0c 用于表示这个类型的变量可能会在这些常数里变化 我们在这篇文章里讲一下枚举类型的几个用法 一个简单的枚举类型的定义 xff1a enum TestEnum x y z 而使用也很简单 xff1a TestE
  • C++中enum与字符串或CString互相转换的方法

    C 43 43 中没有专门为enum与字符串或CString互相转换的直接方法 xff0c 但是工作中会常遇到相互转换的场景 下面介绍一种自己实现的方法 xff0c 首先得定义一个enum类型 xff0c 同时 xff0c 定义一个与之对应
  • C++枚举解读(enum)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 枚举是什么 xff1f 二 使用步骤1 作用域2 隐式类型转换3 显式指定枚举值类型4 指定枚举值的值4 整形显式转换成
  • c++打印enum class

    span class token keyword enum span span class token keyword class span span class token class name A span span class tok
  • enum 实现 Parcelable 接口

    enum 实现 Parcelable 接口 当你创建一个枚举 xff0c 想要使用上述插件时 xff0c 就会发现无法序列号 这个是因为 Parcel writeXXX 没有写入枚举的方法 xff0c 所以无法直接实现 Parcelable
  • 【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG

    问题描述 xff1a 今天编写定时任务管理模块 xff0c 提交定时任务实体信息时 xff0c 提示如下错误 nested exception is org apache ibatis builder BuilderException Er
  • java enum(枚举)使用详解 + 总结

    enum 的全称为 enumeration xff0c 是 JDK 1 5 中引入的新特性 xff0c 存放在 java lang 包中 下面是我在使用 enum 过程中的一些经验和总结 xff0c 主要包括如下内容 xff1a 1 原始的
  • Java枚举的使用

    枚举类型可以取代以往常量的定义方式 即将常量封装在类或接口中 此外 枚举类型还提供了安全检查功能 枚举类型本质上还是以类的形式存在 1 使用枚举类型设置常量 以往设置常量 通常将常量放置在接口中 这样在程序中就可以直接使用了 并且该常量不能
  • C++枚举类型用法总结(enum)(可以用枚举字符常量代替常量)

    C 枚举类型enum表示枚举 通常用于定义个新类型的字符常量 比如enum January February March 枚举类型的作用域一般是整个文件或者类内 当枚举类型定义在文件开头时 则作用域是从定义位置开始往后 不包括函数内定义 当
  • C语言枚举类型的大小

    主流编译器如 gcc vc MinGW gcc等枚举变量均为4字节 少量编译器会根据枚举个数做优化 如只有3个枚举值时 size可能为1 enum长度不确定会带来可移植性问题 如果第三方库API接口使用enum类型 编译和调用库时一旦有关e
  • enum枚举变量的用法

    Class Piece public typedef enum colorless white black pieceColor enum pieceColor colorless white black 首先声明一种枚举型变量 该变量的类
  • 浅谈Java Enum作用与应用场景

    在实际应用中 有的变量只有几种可能取值 如人的性别只有两种可能取值 星期只有七种可能取值 在 Java语言中对这样取值比较特殊的变量可以定义为枚举类型 所谓枚举是指将变量的值一一列举出来 变量只限于列举出来的值的范围内取值 枚举是一个特殊的

随机推荐

  • PX4之commander剖析解读-2

    首先 xff0c 感谢 阿木社区 小伙伴们在PX4 方面做出的贡献 在学习px4的过程中 xff0c 我也是个小学生 xff0c 以下作为个人的小心得 xff0c 纰漏蛮多 xff0c 还望各位同仁包涵 期待批评指正 但我们的目的只有一个
  • BAT2021年最新一二三 面试问题,挑战一下你能走到哪一步

    背景 今年实在太难了 xff0c 从去年3月份开始我就选择离职然后单干 xff0c 刚开始和几个同事一起投资开公司 xff0c 想着做近几年比较火的知识付费 xff0c 好歹科班出身的程序猿 xff0c 难不成我还不能给人家讲讲Java课收
  • Python程序员在面试中如何展示自己的基本功?

    当前Python语言的上升趋势非常明显 xff0c 随着大数据和人工智能领域的发展 xff0c Python语言未来的应用前景还是非常值得期待的 xff0c 另外 xff0c Python语言在Web开发 嵌入式开发和各种后端服务开发中也扮
  • 如何修改mysql root密码

    如何修改mysql root密码 忘记MySQL ROOT密码是在MySQ使用中很常见的问题 xff0c 可是有很多朋友并不会重置ROOT密码 xff0c 那叫苦啊 xff0c 特写此文章与大家交流 xff1a 1 编辑MySQL的配置文件
  • c++和Java哪个比较好入门

    方向比努力更重要 对于初学编程的人来说选择一门合适的编程语言关系到自己以后的职业发展 c 43 43 和Java那个更适合作为入门语言 今天就听小编来讲一讲 C 43 43 语言 它是正宗的C语言的嫡系 xff0c 由C语言发展而来 C 4
  • 大数据和人工智能未来发展趋势

    随着前段时间召开的全国互联网大会 xff0c 将大数据和人工智能作为未来发展的新方向 xff0c 那2018年大数据和人工智能会有怎样的发展趋势 xff1f 更多关注零售 在近期的大数据和人工智能的应用热潮中 xff0c 几乎没有哪个领域像
  • 大数据学习路线图(技术+项目双管齐下)

    随着大数据技术产业的不断发展 xff0c 越来越多的互联网公司开始高薪聘请大数据技术人才 而大数据人才培养无论是对于企业还是对于自己来说都至关重要 xff0c 千锋教育作为国内大数据培训的先头兵 xff0c 视人才培养为己任 xff0c 始
  • 说一下 jvm 有哪些垃圾回收器?

    一 串行垃圾回收器 在JDK1 3之前 xff0c 单线程回收器是唯一的选择 它的单线程意义不仅仅是说它只会使用一个CPU或一个手机线程去完成垃圾收集工作 而且它进行垃圾回收的时候 xff0c 必须暂停其它所有的工作线程 xff08 Sto
  • java从入门到精通学习路线

    目前Java在许多行业的客户端方面的应用非常多 xff0c 比如OA 邮箱 投票 金融 考试 物流 医疗 矿山等信息方面的系统 Java开发者在这方面的需求也非常大 xff0c 待遇也相当不错 xff0c 工资水平可能和Java互联网方向的
  • 程序员经常逛得网站有哪些

    对于程序员而言非常值得收藏的网站有很多 xff0c 我将从技术学习类 业余放松类两个大的方向进行分享 xff08 篇幅可能有点偏长 xff0c 耐心阅读哦 xff0c 或者点赞收藏之后慢慢品味 xff09 一 程序员进行技术学习需要收藏的网
  • 大数据全套视频教程完整版

    大数据1 0时代 社会大数据成就了Google xff0c yahoo xff0c 百度 大数据2 0时代 消费大数据造就了亚马逊 xff0c Ebay xff0c 阿里巴巴 xff0c 腾讯 大数据3 0时代 xff0c 把关注焦点转到了
  • 云计算工程师必备技能

    随着信息现代化的发展 xff0c 人们对信息资源的需求不断地增长 xff0c 虽然现在的信息充斥着整个网络 xff0c 但是如何能快速的获得我们所需的有效的资源才是重点 xff0c 云计算技术工程师就是在这个需求下产生的 在云计算工作中 x
  • go语言有哪些劣势?

    作者 xff1a 茹姐 链接 xff1a https www zhihu com question 300163211 answer 654447355 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商
  • go语言有哪些好的debug方法?

    作者 xff1a Davie 链接 xff1a https www zhihu com question 40980436 answer 655067839 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c
  • 学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?

    先说结论 xff1a 没有少走的弯路 走过的弯路最终都会成为自身的财富 前言 xff1a 如果在开始学习之前 xff0c 就想着能少走弯路 xff0c 那多半会走不少弯路 因为关注的重点错了 xff0c 把本来是踏踏实实学习编程知识的时间
  • 【OpenGL-矩阵】OpenCV相机内参(Intrinsics)与OpenGL投影矩阵(ProjectionMatrix)

    参考博客 xff1a https blog csdn net AIchipmunk article details 41489825 spm 61 1001 2014 3001 5502 https blog csdn net xx7804
  • nginx是以多进程的方式来工作的

    nginx是以多进程的方式来工作的 nginx在启动后 xff0c 会有一个master进程和多个worker进程 master进程主要用来管理worker进程 xff1a 包含 xff1a 1 接收来自外界的信号 xff0c 向各work
  • Maven环境的搭建与idea配置

    Maven环境的搭建与 idea 配置 Maven 下载 xff1a http maven apache org download cgi Maven 中央仓库地址 xff1a http search maven org 配置maven 环
  • Java基础知识总结(2021版)

    x1f345 作者简介 xff1a 哪吒 xff0c CSDN2021博客之星亚军 x1f3c6 新星计划导师 博客专家 x1f4aa x1f345 技术交流 xff1a 定期更新Java硬核干货 xff0c 不定期送书活动 x1f345
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中