Java:枚举类型----每博一文案师父说:人活一世,每个人都有他的特别,每个人都值得被温柔相待。...枚举类型的介绍一个 枚举类型 是一种特殊的数据类型,使一个变量是一组预定义的常量。变量必须等于一个已经预定义的值。...声明为 : public static final对象如果有实例变量,应该声明为 private final ,并在构造器中初始化。...JDK 5.0 enum 定义枚举类在 Java 编程语言中,基于 JDK5.0 的前提下,您可以使用 enum 关键字定义枚举类型。...JDK5.0 enum 定义的枚举类 常用的三个方法 values(),valueOf()这两个都是静态方法。以及一个 toString()方法。6.
break; default: System.out.println("参数异常"); } } } 使用枚举之后...package com.merryyou.enmu; import java.util.HashMap; import java.util.Map; /** * Created on 2016/
,可以在枚举类型中添加一些构造器、方法和域。...当然,构造器只是在构造枚举常量的时候被调用。所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString() 方法,这个方法能够返回枚举常量名。...每个枚举类型都有一个静态的 values() 方法,它将返回一个包含全部枚举值的数组。ordinal 方法返回 enum 声明中枚举常量的位置,位置从 0 开始计数。...UserType common = UserType.valueOf("common"); // 返回具有指定名称的指定枚举类型的枚举常量 UserType common1 = Enum.valueOf...typeName, Integer typeId) { this.typeName = typeName; this.typeId = typeId; }}参考资料《Java
在编程中,常常遇到多种类型、多种状态的情况,对于这种可以事先预知的业务我们常常有两种表示方法: 使用DB管理,优点是方便在线维护,缺点是每次加载都要读取数据库,加载的性能取决于数据库的压力 。...使用枚举类型,优点是加载速度依赖于应用服务器,缺点是修改比较麻烦,每次加类型都需要发布代码。...对于Java枚举类型的使用,我们可以总结为以下几个方面:整型值,字符串字段和字符串的相关描述,下面我们就讨论如何方便的在这几个类型中相关转换,对于所有的类型转换可以总结如下: int --> Enum...String -->Enum Enum-->String Enum-->描述 int -->描述 String -->描述 下面我们对于上面的7种描述来做出对应的转换方法,首先定义一个枚举类型...public enum EnumDemo { fail, success, unknow; } 为了能够保证相关的value和值能够保存下来,我们需要对枚举类型改成如下
以下使用 JDK 版本为:1.8.0_121 枚举类型的引入 枚举类型是 Java 5 中增加的一个小特性,在此之前,实现枚举的方式为定义编译期常量形式。...实例属性 name、ordinal,及同名方法 该示例中给 Season 枚举类型增加了一个 describe 属性,其实在 Enum 类中已经具有两个属性 name 和 ordinal,分别表示枚举实例名称和序号...name 值,valueOf 函数从 map 集合中返回枚举实例。...枚举类型的 switch 用法 枚举类型描述的是一个有限空间的元素集合,所以对元素的判断应该是常见的操作。枚举类型支持 switch 用法,所以避免了多个 if-else 判断的形式。...引用: Java Enums Tutorial A Guide to Java Enums
文章目录 枚举类的使用 如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 方式二:jdk5.0,可以使用enum关键字定义枚举类 Enum类的主要方法 toString() values() valueOf...(String objName) 使用enum关键字定义的枚举类实现接口的 情况一:实现接口,在enum类中实现抽象方法 情况二:让枚举类的对象分别实现接口中的抽象方法 枚举类的使用 枚举类的理解:类的对象只有有限个...我们称此类为枚举类 当需要定义一组常量时,强烈建议使用枚举类 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。...如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 //自定义枚举类 class Season{ //1.声明Season对象的属性:private final修饰 private final...使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类 枚举类的构造器只能使用 private 权限修饰符 枚举类的所有实例必须在枚举类中显式列出(, 用于分隔
用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举。参考:java编程思想。...无法从enum继承子类有时很令人沮丧。...在一个接口内部创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类的目的。举例来说,假设想用enum表示不同的食物,同时还希望每个enum元素仍然保持Food类型。...然而当你需要与一大堆类型打交道时,接口就不如enum好用。例如,你想创建一个枚举的枚举。那么可以创建一个新的enum,然后用其实例包装Food中的每一个enum类。...package com.test.java.tenum; /** * 枚举的枚举 * Created by Administrator on 2016/3/30. */ public enum
public abstract String getName(); } 如果RED只是一个Color类的一个static final的实例,那么上面的代码就很让了费解了,为什么在枚举类型中可以有一个抽象方法...().getSuperclass().getSuperclass()); //打印该枚举类型的修饰符 System.out.println(Modifier.toString...那么,我们应该这么理解枚举类型的原理,首先enum Color继承了java.lang.Enum这个抽象类,但enum Color还是一个抽象类,所以它可以有抽象方法和非抽象方法。...使用Java普通类模拟枚举 import java.util.HashMap; import java.util.Map; /** * 模拟星期中的表示的天,每个星期天都表示一个对象...//使用普通JAVA类模拟枚举的应用 WeekDate weekDate = WeekDate.MON; //获得一个枚举对象 //调用枚举中提供的方法
public enum Music { Because_Of_You("/resource/Because_Of_You.wav"), Just_A_Ki...
Java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?...Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。...每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。...首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下: public enum...无法从enum 继承子类,如果需要扩展enum 中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。 6. 使用EnumSet 代替标志。
, SATURDAY, SUNDAY 5} 那我们先来看一下他的概念是啥,枚举类型是Java5新增的特性,他是一种特殊的数据类型,是因为他既是一种类(class)类型,又比普通的类型多了写特殊的约束。...2.枚举是什么 我们先编译一个上面写的Day.java文件,然后反编译他,看他编译出来的结果是什么,如下图: ?...从上图我们可以看出反编译出来Day是一个final类型,也就是不能被其他类继承,并且他是继承于Enum类的。如果我们定义一个枚举类型,其实Java替我们做了定义常量这件事情,也就是上图1的区域。...值得注意的是这两个方法是有编译插入的,所以他只停留在本类的层面。不信咱就试试 ? 3.阅读源码 我们找到Enum类,看一下他里面有哪些方法,以及各方法的作用。 ?...equals:比较枚举类型是否相等。 getDeclaring:与该枚举类型值相对应的类。 ordinal:返回枚举常量的序数。
Java中的枚举 枚举前时代 在Java语言中, 枚举类型从JDK1.5才开始提供。...1.5 中定义了一个枚举类型:`java.lang.Enum`。...Java枚举类实现的原理探求 ava枚举类型的奥秘就在编译阶段,枚举类在编译后会生成了一个扩展java.lang.Enum的类。这个可以通过JDK自带的javap工具来反编译生成的.class文件。...从控制台输出的反编译后的源码可以看出: - 自定义的枚举类会自动继承`java.lang.Enum`类 - 每个成员变量都会被转换为 private static final的枚举类型的实例 - 自动添加...private的构造函数 从反编译后的源码就不难理解Enum的特性了。
一、前言 Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息。...而枚举值RED和BLUE则被编译为MyColor的类常量,并且在类加载的初始化阶段实例化。...定义枚举类型本质上就是在定义带final修饰符的Enum的子类; 2. 枚举值本质为第1点所定义的类的类常量; 3....三、枚举类型的抽象父类Enum 其实我们大多数情况下都是调用父类Enum的方法来操作自定义的枚举值,下面一起看看父类Enum吧! ...重写了equals方法,通过==比较两个枚举值的内存地址来判断两者是否相同。 4. 实现compareTo方法,通过比较两个枚举值的ordinal值来做判断。
最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?...Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。...每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。...首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下: public enum...无法从enum 继承子类,如果需要扩展enum 中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。 6. 使用EnumSet 代替标志。
这个时候就体现出枚举类的作用了,java中枚举类型就是针对这样的场景需求所设计的。.../** * 枚举类的后缀建议为Enum,枚举类型的实例对象建议全大写(这样做符合JAVA的规范) */ public enum SeasonEnum{ SPRING,SUMMER,AUTUMN..."夏天"),AUMUTN("秋天"),WINTER("冬天"); private String chinese; //枚举类型的构造函数默认为private,因为枚举类型的初始化要在当前枚举类中完成...其实枚举类型可以看做我们平时新建.java差不多,只是枚举类限制了此类的实例对象。当然,枚举类可以有自己的成员变量和方法。...如果想看它更多用法请参考下面的链接 更多用法请参考这篇Java 枚举(enum) 详解7种常见的用法_请叫我大师兄_的博客-CSDN博客_java 枚举的定义与用法 版权声明:本文内容由互联网用户自发贡献
public enum Spiciness{ NOT,MILD,MEDIUM,HOT,FLAMING } 这里创建了一个名为Spiciness的枚举类型,它具有5个具名值,由于枚举类型的实例是常量...,因此按照命名惯例它们都用大写字母表示(如果在一个名字中有多个单词,用下划线将它们隔开) 为了使用enum,需要创建一个该类型的引用,并将其赋值给某个实例: public class SimpleEnumUse...plain.describe(); greenChile.describe(); jalaeno.describe(); } } 大体上,你可以将enum用作另外一个创建数据类型的方式...,然后直接将所得到的类型拿来使用,这正是关键所在。
Java中的枚举 枚举前时代 在Java语言中, 枚举类型从JDK1.5才开始提供。...1.5 中定义了一个枚举类型:java.lang.Enum。...Java枚举类实现的原理探求 ava枚举类型的奥秘就在编译阶段,枚举类在编译后会生成了一个扩展java.lang.Enum的类。这个可以通过JDK自带的javap工具来反编译生成的.class文件。...从控制台输出的反编译后的源码可以看出: 自定义的枚举类会自动继承java.lang.Enum类 每个成员变量都会被转换为 private static final的枚举类型的实例 自动添加private...的构造函数 从反编译后的源码就不难理解Enum的特性了。
toString()); System.out.println("-----------------------------------"); //指定补集,也就是从全部枚举类型中去除参数集合中的元素...>[] universe; //.......... } EnumSet中有两个变量,一个elementType用于表示枚举的类型信息,universe是数组类型,存储该类型信息所表示的所有可能的枚举实例...//否则创建JumboEnumSet return new JumboEnumSet(elementType, universe); } 从源码可以看出如果枚举值个数小于等于...图示演示过程如下,注意universe数组在EnumSet创建时就初始化并填充了所有可能的枚举实例,而elements值的第n个bit位1时代表枚举存在,而获取的则是从universe数组中的第n个元素值...好~,关于java枚举,我们暂时聊到这。
类型信息(Class对象)与反射机制)就创建对象,毕竟静态变量初始化是在SingletonInner类初始化时触发的,并且由于静态内部类只会被加载一次,所以这种写法也是线程安全的。...枚举序列化是由jvm保证的,每一个枚举类型和定义的枚举变量在JVM中都是唯一的,在枚举类型的序列化和反序列化上,Java做了特殊的规定:在序列化时Java仅仅是将枚举对象的name属性输出到结果中,反序列化的时候则是通过...extends V> m) //创建一个枚举映射,从指定映射对其初始化。 EnumMap(Map m) 与HashMap不同,它需要传递一个类型信息,即Class对象,通过这个参数EnumMap就可以根据类型信息初始化其内部数据结构,另外两只是初始化时传入一个...().getEnumConstantsShared(keyType); } 从方法的返回值来看,返回类型是枚举数组,事实也是如此,最终返回值正是枚举类型的values方法的返回值,前面我们分析过values
作者:wuzejian blog.csdn.net/javazejian/article/details/71333103 本篇主要是深入对Java中枚举类型进行分析,主要内容如下: 枚举类型是Java...枚举类型Day中分别定义了从周一到周日的值,这里要注意,值一般是大写的字母,多个值之间以逗号分隔。...实际上在使用关键字enum创建枚举类型并编译后,编译器会为我们生成一个相关的类,这个类继承了Java API中的java.lang.Enum类,也就是说通过关键字enum创建枚举类型在编译后事实上也是一个类类型而且该类继承自...注意编译器还为我们生成了两个静态方法,分别是values()和 valueOf(),稍后会分析它们的用法,到此我们也就明白了,使用关键字enum定义的枚举类型,在编译期后,也将转换成为一个实实在在的类,...而在该类中,会存在每个在枚举类型中定义好变量的对应实例对象,如上述的MONDAY枚举类型对应public static final Day MONDAY;,同时编译器会为该类创建两个方法,分别是values
领取专属 10元无门槛券
手把手带您无忧上云