首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java枚举原来还能这么

前言 相信不少java开发者写过状态变更的业务,比如订单流程、请假流程等等。一般会搞一个状态标识来标识生命周期的某个阶段。很多人会写这种逻辑: ? 如果流程几十个岂不是要if到爆炸。...接下来该说另一个东西java枚举了。 Java枚举 一个Java枚举是一种定义的一类常量列表的特殊类型的类。是JDK 1.5中引入的新特性。...枚举在JDK中其实就是被设计成了单例模式,所以是不允许外部对其进行实例化的,枚举类型的实例化都是在其加载的时候JVM帮我们完成的。这是Java虚拟机规范明确规定的,保证了线程的安全性。...由于Java枚举隐式实现了枚举超类java.lang.Enum,因此无法实现另一个类,但是可以实现接口。可以声明抽象方法由具体的内部枚举来实现。我们定义一个颜色枚举来看看: ?...经过两次的流转,货物成功到达买家的手中,状态也正确的进行了变更,而且可维护性也得到了保证,只需要变更枚举处理流程。

81040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java enum 枚举还可以这么

    在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外。然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看。...另外需要特别说明的是,enum中的构造方法不可以public标识,这样做是为了防止用户实例化enum。 2、可以用来定义常量 先来回顾一下Java中如何定义常量吧,看下面一段代码: ?...下面我们还可以enum枚举来代替上面的常量定义,代码如下: ? 在Java中用enum来定义常量在语法上没有什么优势,但是enum枚举类型可以提供更多的操作功能。...和一般的类中使用接口一样,enum枚举中同样可以继承接口,并实现接口中的所有方法,这样做的好处在于可以更方便地对枚举中的值进行排序、比较等操作,封装性更好。...总结 说白了,enum枚举类型是一个不可以被继承的final类,就以上面的State枚举为例,如果你查看enum类型的字节码,其实是State类型的类静态常量。

    73720

    Java枚举

    什么是枚举枚举是一种特殊的数据类型,用于定义具有固定个数的常量集。它可以帮助我们更好地管理常量,使代码更易于阅读和维护。Java枚举是一种高效、可读性强的常量管理方式,它可以使代码更易于维护和扩展。...使用Java枚举可以帮助我们有效地组织常量,并将其用于多种场景,提高代码的易用性和可重用性。如何使用Java枚举?...在Java中,定义枚举使用enum关键字,其基本语法结构如下:其中,EnumName表示枚举类型的名称,CONSTANT1、CONSTANT2、……、CONSTANTN表示枚举类型中的常量值。...如何使用Java枚举中的常量值?...在Java枚举中,我们可以为每个常量值添加方法,以进一步组织和管理常量。

    18021

    Java 枚举

    枚举产生之前,都是采用多例设计模式实现。...枚举概念产生后,出现了新的 enum 关键字: 定义枚举: package cn.mldn.utli; enum Color { //定义枚举类 RED,GRE,BLUE; // 表示此处为实例化对象...,和先前的多例设计code相比较,枚举可以完全简化的替代多例设计模式 枚举关键字 enum定义的枚举类实际上就是继承了 Enum 类的子类:   Enum是一个抽象类;Enum类中定义了两个方法:     ...|-- 取得枚举的索引: public final int ordinal()     |-- 取得枚举的名字: public final String name()     |-- 枚举类之中还有一个...RED("红色"),BLU("绿色"),GREEN("黄色"); //枚举对象定义在枚举类中的首行 private String title ; // 枚举类中的属性 private

    1.2K10

    Java 枚举

    Java 枚举 枚举 enum 什么是枚举类: Java 枚举是一个特殊的类,一般表示一组常量 比如: 一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等… 类似这种当一个变量有几种固定可能的取值时..., 可以将它定义为枚举类型 出现: Java1.5 之前是没有 枚举 和 注解 的....那时候一般接口常量来替代 而使用 Java 枚举类型 enum 可以更贴近地表示这种常量. 还可以配合 Switch使用… 枚举类的实现: JDK1.5 之前需要自定义枚举类....JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象 作为表达式 case 子句可以直接使用枚举值的名字(无需添加枚举类作为限定) SeasonTest2.Java ​ Season.Java...在 Java 语言中和枚举类相关的,还有两个枚举集合类 java.util.EnumSet 和 java.util.EnumMap 使用 EnumSet 可以保证元素不重复,并且能获取指定范围内的元素

    9410

    java debug调试怎么

    debug的好处: 1.跟踪变量,可以查看变量的值的变化 2.迅速找到错误的原因,节省时间,找错小帮手 那么debug调试助手怎么,用在什么地方?...debug用在java程序上,.class文件上面 不适合jsp页面,不适合镶嵌在jsp页面上的java代码; 使用方法: 如果你的程序报错了 500是空指针异常,但是变量很多,不知道哪个没有赋到值,...这时候debug最合适 第一步: 在错误信息提示的java页面或者你认为有问题的java页面,的左侧显示行的地方,鼠标点击一下,出现一个点,如下图所示,这个就是打断点; 这个断点可以打多个,这个断点的意义就是...,当你启动程序的时候(记住是debug启动),程序执行到这一步的时候,就会停在这里,而且程序没有关闭; 注意: 关键点一:打断点之后,启动程序,怎么启动程序才能进入debug模式》 点击debug

    3K20

    详解 Java 枚举

    前言 枚举(enum)是 Java 语言的关键字之一,和 class 关键字一样,我们可以通过 enum 来定义一个枚举类,并在这个枚举类里面创建相关的枚举常量。...这篇文章里我们来看一下枚举Java 字节码层面是怎么表示的。...枚举类 我们来深入看一下 Java 编译器是怎么处理枚举的:在控制台上键入 javap -c TestEnum.class(类路径需要换成你自己的编译得到的类路径),即反编译查看 TestEnum.class...那么为什么在上面的枚举类 TestEnum 的字节码中我们没有看到构造方法呢?**我们可以猜到这正是编译器为了顾及枚举的特性而将构造方法去除(或者说别的方法代替)的体现。...那么对于枚举怎么样的情况呢,其实到这里很多小伙伴已经可以猜到了,我们写个 demo 验证一下: public class Enum { public static void main(String

    1.3K20

    Java枚举细节

    枚举的简单使用 在java中,我们可以使用enum关键字来定义枚举: public enum Color { RED, GREEN, BLUE; } 就像上面一样,我们定义了一个名为Color...虽然Java提供枚举类的定义,但是实际上他并不是Java中一个新的对象类型,我们通过对Color枚举类进行反编译,得到如下的反编译结果: $ javap Color.class // 反编译结果 Compiled...同时注意,编译器会为我们添加两个新的static方法:values() 和 valueOf(java.lang.String),其实分别作用是返回枚举类中定义的所有的枚举常量,以及根据枚举名来获取枚举常量...当然,由于每一个枚举常量实际上是实现了java.lang.Enum的枚举类的一个静态实例对象,而这个过程是编译器为我们进行的,所以,自然,我们可以在枚举类中定义任何的方法、变量,以及构造函数的定义: public...有人可能想说,那我静态域放到枚举常量前面,让他先加载怎么样?很遗憾,Java不允许这样做: public enum Color { // 编译不通过!!!

    20920

    java枚举

    一、 枚举类的说明 枚举类的理解:类的对象只有有限个,确定的。 当需要定义一组常量时,强烈建议使用枚举类 如果枚举类只一个对象,则可以作为单例模式的实现方式。...二、如何定义枚举类 ① 自定义枚举类 class Season{ // 1.声明Season对象的属性:private final修饰 private final String seasonName...// 使用enum关键枚举类 enum Season1{ // 1.提供当前枚举类的对象,多个对象之间“,”隔开,末尾对象";"结束 SPRING("春天","春暖花开"),...,枚举类常用方法:(继承于 java.lang.Enum 类) value() 返回所有的枚举类对象的构成的数组 valueOf(String objName):返回枚举类中对象名是 objName 的对象...多个对象之间","隔开,末尾对象";"结束 SPRING("春天","春暖花开"){ @Override public void show() {

    73440
    领券