首页
学习
活动
专区
圈层
工具
发布

Java中的枚举Enum

在Java没有提供枚举的时候,比如我们要使用一个表示周几的枚举值怎么办? Java中是这样解决的:定义一个私有的构造函数,然后在类中new出对象来。...我们可以定义枚举中的成员函数。...中枚举的总结: 1.枚举也是一种特殊形式的Java类 2.枚举类中声明的每一个枚举值代表枚举类的一个实例对象 3.与Java中普通类一样,在声明枚举类时,也可以声明属性、方法构造函数,但枚举类的构造函数必须为私有的...4.枚举类也可以实现接口,或继承抽象类 5.若枚举只有一个枚举值,则可以当做单态设计模式使用 最后需要明确的是: Java中声明枚举类,均是java.lang.Enum类的子类,它继承了Enum...具体方法可以参考Java API文档,里面提供了一些有用的方法。

1.6K20

java中enum 实现接口

java中enum 实现接口为什么会有这篇文章呢?日常生活中遇到了一个问题。听我慢慢说来场景我在组件中封装了一个BaseResultEnum;用来定义返回的错误码和错误信息。...但是再返回的时候,必须xxxResultEnum.code,xxxResultEnum.msg 2个参数进行传递进来。因为枚举不能继承。实现有一天忽然发现可以枚举可以实现接口。...上层定义一个统一的接口不就好了public interface IResultCode {/** * 返回码 * * @return Integer */Integer getCode();/** *...返回消息 * * @return String */String getMsg();}枚举类@Getter@AllArgsConstructorpublic enum BaseResultEnum implements...业务内就自己定义自己项目内的错误信息就可以@Getter@AllArgsConstructorpublic enum LearningResultEnum implements IResultCode

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

    关于Java中枚举Enum的深入剖析

    在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定。Java也不例外。Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析。...枚举原理是什么 Java中Enum的本质其实是在编译时期转换成对应的类的形式。...转换成了继承自的java.lang.enum的类 既然隐式继承自java.lang.enum,也就意味java代码中,Season不能再继承其他的类 Season被标记成了final,意味着它不能被继承...,并将上面的四个对象放入数组的操作. values方法 values方法的的返回值实际上就是上面$VALUES数组对象 swtich中的枚举 在Java中,switch-case是我们经常使用的流程控制语句...Java中enum的一些深入的剖析,欢迎大家不吝赐教。

    90030

    关于Java中枚举Enum的深入剖析

    在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定。Java也不例外。Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析。...枚举原理是什么 Java中Enum的本质其实是在编译时期转换成对应的类的形式。...转换成了继承自的java.lang.enum的类 既然隐式继承自java.lang.enum,也就意味java代码中,Season不能再继承其他的类 Season被标记成了final,意味着它不能被继承...,并将上面的四个对象放入数组的操作. values方法 values方法的的返回值实际上就是上面$VALUES数组对象 swtich中的枚举 在Java中,switch-case是我们经常使用的流程控制语句...Java中enum的一些深入的剖析,欢迎大家不吝赐教。

    1.2K30

    Java Enum Singleton

    参考链接: Java Singleton 今天回头看了单例模式,以前从没用过枚举单例,学习了一下,Enum Singleton 是目前最优的单例模式,好处有三:  1....默认枚举实例的创建是线程安全的,但是在枚举中的其他任何方法由程序员自己负责。   .../** * Singleton pattern example using Java Enumj */ public enum EasySingleton{     INSTANCE; }  你可以通过...枚举自己处理序列化   传统单例存在的另外一个问题是一旦你实现了序列化接口,那么它们不再保持单例了,因为readObject()方法一直返回一个新的对象就像java的构造方法一样,你可以通过使用readResolve...Administrator  *  */ public enum EnumSingleton {     INSTANCE;     /**      * 私有构造方法      */

    1.1K30

    Java--Enum的思考

    ---- 枚举类是Java5引进的特性,其目的是替换int枚举模式或者String枚举模式,使得语义更加清晰,另外也解决了行为和枚举绑定的问题. int枚举模式 在枚举类之前该模式被广泛使用,如果是int...Java作为强类型语言,该模式让其失去了强类型优势....构造函数前两个默认为枚举字段名称,以及所处的顺序.也就是Enum中的name与ordinal....如何与行为绑定 从反编译的代码来看枚举类是可以实现接口的,那么就可以利用接口定义行为,然后枚举类中覆盖行为.同样假设每一个枚举字段所对应的行为不同,那么直接内部覆盖掉也是很好的策略,这种情况下也叫策略枚举模式...使用建议 关于使用建议,参考阿里巴巴Java开发手册中的三条建议,以及笔者的一条建议 所有的枚举类型字段必须要有注释,说明每个数据项的用途。

    1.2K40

    Enum Parse 中的坑

    首先我们来看一个简单的示例: public enum City: byte { BeiJing= 0, ShangHai = 1, ShenZhen= 2, WuHan=...解决问题 Enum中的Parse方法除了支持从Name字符串转换为枚举值外,还支持从数字字符串转换为枚举值,例子如下: //从数字字符串转换为枚举值 if (Enum.TryParse("100", out...{ Console.WriteLine("不是枚举对应的数值"); } //Name字符串转换为枚举值 if (Enum.TryParse("HongKong", out City city2...我们在Name字符串转换为枚举值时按照以往的方式来编写代码,但是在从数字字符串转换为枚举值时,我们使用了Enum.IsDefined方法来确定city1是否是枚举City实际定义的内容。...因此当我们从数值字符串转换成枚举的时候需要注意,即使数值在枚举中未定义它也会转换成功,这时就应该使用IsDefined方法来确保枚举定义了对应的值。

    74910

    java枚举类型enum的使用

    最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?...Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。...首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下: public enum...可以创建一个enum 类,把它看做一个普通的类。除了它不能继承其他类了。(java 是单继承,它已经继承了Enum), 可以添加其他方法,覆盖它本身的方法 3....values() 方法是编译器插入到enum定义中的static 方法,所以,当你将enum 实例向上转型为父类Enum是,values()就不可访问了。

    1.6K100

    JAVA枚举类型(Enum)的使用

    这个时候就体现出枚举类的作用了,java中枚举类型就是针对这样的场景需求所设计的。.../** * 枚举类的后缀建议为Enum,枚举类型的实例对象建议全大写(这样做符合JAVA的规范) */ public enum SeasonEnum{ SPRING,SUMMER,AUTUMN...我们这样设想一下,当我们创建SeasonEnum这个枚举类时,可不可以让SeasonEnum中的每一个实例对象都有一个getChinese()方法呢。答案是肯定的,而且这种做法在企业开发中很常见。...其实枚举类型可以看做我们平时新建.java差不多,只是枚举类限制了此类的实例对象。当然,枚举类可以有自己的成员变量和方法。...如果想看它更多用法请参考下面的链接 更多用法请参考这篇Java 枚举(enum) 详解7种常见的用法_请叫我大师兄_的博客-CSDN博客_java 枚举的定义与用法 版权声明:本文内容由互联网用户自发贡献

    1.9K20

    Java 枚举类型 enum

    以下使用 JDK 版本为:1.8.0_121 枚举类型的引入 枚举类型是 Java 5 中增加的一个小特性,在此之前,实现枚举的方式为定义编译期常量形式。...定义过程与 class 的定义类过程基本相同,同样提供有属性和方法的定义,不同之处在于 enum 定义的类默认继承了 Enum 类,因为 Java 不允许多继承,所以使用 enum 定义的类不能再继承其它类...Enum 的构造函数为 protected 级别,观察示例中 Season 枚举类内部声明的四个实例,发现并未显式调用基类的构造函数,甚至连自身的构造函数也没有显式调用。...valueOf 与 values 函数 从上图中的反编译内容可以发现两个额外的方法定义,其中 valueOf 函数在 Enum 源码中已有定义,但是比较 Enum 源码中的 valueOf 函数与此处反编译生成的...valueOf 函数实现,可以发现,编译器生成的 valueOf 函数内部调用的其实就是 Enum 类中定义的 valueOf 函数。

    1.5K32

    Java 枚举类型enum 的使用

    Java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?...Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。...首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下: public enum...可以创建一个enum 类,把它看做一个普通的类。除了它不能继承其他类了。(java 是单继承,它已经继承了Enum), 可以添加其他方法,覆盖它本身的方法 3.    ...values() 方法是编译器插入到enum 定义中的static 方法,所以,当你将enum 实例向上转型为父类Enum是,values() 就不可访问了。

    1.7K91

    深入分析Java的enum

    EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。...而且,你看到了熟悉的values()方法和valueOf()方法。 仔细看,这个类继承了java.lang.Enum类!所以说,枚举类不能再继承其他类了,因为默认已经继承了Enum类。...而在枚举类中,我们只需要像上面那样写【RED(30){}】就可以了,因为java会自动的去帮我们完成这一系列操作 枚举类的其他用法 ?...(java是单继承,它已经继承了Enum),可以添加其他方法,覆盖它本身的方法 switch()参数可以使用enum values()方法是编译器插入到enum定义中的static方法,所以,当你将enum...enum允许程序员为eunm实例编写方法。所以可以为每个enum实例赋予各自不同的行为。 【java.util.EnumSet和java.util.EnumMap】

    1.5K110

    python中enum使用

    参考链接: Python枚举模块enum python中枚举类型个性化用法  摘要:枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。...本文采用继承自enum模块的Enum类, 实现了一些个性化的设置, 如枚举类型的初始化。   ...笔者进行了__init__()方法重写,但是一直报错,于是去看了 enum.py的源码, 发现 Enum中只有 构造方法__new__()但并未找到其初始化方法__init__(),源码也比较复杂,因能力有限看了半天也未想出通过...百思不得其解之后,笔者另辟蹊径,想到通过类中的静态方法来实现这一功能, 代码如下:   class Week(enum.Enum):     Mon = 0     Tue = 1     Wed =...最后,版权声明: 本blog是笔者根据在网络上看到的某企业面试题为背景编写的代码, 谨用于关于python中enum类的学习经验交流,无作他用。

    81730
    领券