Java:枚举类型----每博一文案师父说:人活一世,每个人都有他的特别,每个人都值得被温柔相待。...枚举类型的介绍一个 枚举类型 是一种特殊的数据类型,使一个变量是一组预定义的常量。变量必须等于一个已经预定义的值。...常见的例子包括罗盘方向(NORTH、SOUTH、EAST 和 WEST 的值)和一周的几天。因为它们是常量,枚举类型的字段的名称是大写字母。...JDK 5.0 enum 定义枚举类在 Java 编程语言中,基于 JDK5.0 的前提下,您可以使用 enum 关键字定义枚举类型。...enum 类继承的不是 Object 类,而是 java.lang.Enum 类中的,所以 Season2.SPRING 枚举常量类中没有重写 toStirng()方法的前提下,调用的是 java.lang.Enum
,可以在枚举类型中添加一些构造器、方法和域。...当然,构造器只是在构造枚举常量的时候被调用。所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString() 方法,这个方法能够返回枚举常量名。...每个枚举类型都有一个静态的 values() 方法,它将返回一个包含全部枚举值的数组。ordinal 方法返回 enum 声明中枚举常量的位置,位置从 0 开始计数。...] args) {// [common, sectionAdmin, superAdmin] UserType[] userTypes = UserType.values(); // 返回具有指定名称的枚举常量...UserType common = UserType.valueOf("common"); // 返回具有指定名称的指定枚举类型的枚举常量 UserType common1 = Enum.valueOf
在编程中,常常遇到多种类型、多种状态的情况,对于这种可以事先预知的业务我们常常有两种表示方法: 使用DB管理,优点是方便在线维护,缺点是每次加载都要读取数据库,加载的性能取决于数据库的压力 。...使用枚举类型,优点是加载速度依赖于应用服务器,缺点是修改比较麻烦,每次加类型都需要发布代码。...对于Java枚举类型的使用,我们可以总结为以下几个方面:整型值,字符串字段和字符串的相关描述,下面我们就讨论如何方便的在这几个类型中相关转换,对于所有的类型转换可以总结如下: int --> Enum...,首先定义一个枚举类型: public enum EnumDemo { fail, success, unknow; } 为了能够保证相关的...value和值能够保存下来,我们需要对枚举类型改成如下: public enum EnumDemo { fail(0, "失败"), success(1, "成功"),
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 static void main(String[] args) { // test("add"); test("111");//参数不符合要求的时候也可以执行...break; default: System.out.println("参数异常"); } } } 使用枚举之后...package com.merryyou.enmu; import java.util.HashMap; import java.util.Map; /** * Created on 2016/
以下使用 JDK 版本为:1.8.0_121 枚举类型的引入 枚举类型是 Java 5 中增加的一个小特性,在此之前,实现枚举的方式为定义编译期常量形式。...实例属性 name、ordinal,及同名方法 该示例中给 Season 枚举类型增加了一个 describe 属性,其实在 Enum 类中已经具有两个属性 name 和 ordinal,分别表示枚举实例名称和序号...枚举类型的 switch 用法 枚举类型描述的是一个有限空间的元素集合,所以对元素的判断应该是常见的操作。枚举类型支持 switch 用法,所以避免了多个 if-else 判断的形式。...,从而实现对枚举类型的划分和归类。...在枚举类内部完成对接口函数的实现,所有枚举类型都调用同样的函数实现。
最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?...Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。...每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。...枚举类型的简单定义方法如下,我们似乎没办法定义每个枚举类型的值。...首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下: public enum
枚举类型 定义 用户自定义的数据类型,称为枚举类型;用标识符enum表示整型枚举常量集合 数值 除非特殊定义,否则集合中的整型将从0开始,依次递增,增幅为1 若其中一个值被显式的定义为整数n,其后从n开始依次递增...1(一个枚举类型中多个成员可以有相同的常量值) 命名 通常采用大写字母来给枚举常量命名,使其在程序中明显,表示不是变量 例子 enum months{ JAN, FEB, MAR, ARI = 1,
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关键字,后面跟着枚举类型名称和花括号{}括起来的枚举值列表。...因此,我们在定义枚举类型时应该尽量选择有意义的名称。 枚举类型的存储空间 枚举变量的存储空间取决于编译器和目标平台。在大多数情况下,枚举变量占用的存储空间与整数变量相同。...枚举类型与位运算 枚举类型可以与位运算结合使用,实现更复杂的功能。例如,我们可以定义一个枚举类型来表示一组标志位。...枚举类型与文件操作 枚举类型可以与文件操作结合使用,实现更复杂的功能。例如,我们可以定义一个枚举类型来表示文件操作的状态。
用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举。参考:java编程思想。...Update: 枚举可以当做数据字典来存储,通常只要一个字段即instance本身,toString()或者name()打印的string。...然而当你需要与一大堆类型打交道时,接口就不如enum好用。例如,你想创建一个枚举的枚举。那么可以创建一个新的enum,然后用其实例包装Food中的每一个enum类。...enum组成一个公共类型,这一点是必要的。...一般来说,命令模式首先需要一个只有单一方法的接口,然后从该接口实现具有各自不同的行为的多个子类。接下来,程序员就可以构造命令对象,并在需要的时候使用它们。
枚举合起来的意思就是例举出有限的事物的集合!例如:例举一周有几天、一年有多少个月份。 枚举的正式解释:枚举类型是jdk5中新增的特性,它是一种加了限制的特殊的class类型。...这里的限制指的是对枚举类型所能创建的对象的个数进行了限制!他不像普通的class类那样可以创建无数的对象,他只能创建固定数目的对象,而且这些对象是在定义枚举类型的时候就已经在枚举类内部创建好了的!...(2)、枚举常量值的书写要遵循Java标识符的规范,一般都是全部大写。 (3)、定义的枚举值和枚举值之间用“,”隔开,定义完所有的枚举值之后要加";"。 ...static Enum valueOf(String name) 返回带指定名称的指定枚举类型的枚举常量 int ordinal() 返回枚举常量的序数(初始常量序数为零) String toString...其中键是枚举常量,值是字符串类型 具体转换操作如下所示!
一、前言 Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息。...定义枚举类型本质上就是在定义带final修饰符的Enum的子类; 2. 枚举值本质为第1点所定义的类的类常量; 3....内含私有字段name和ordinal和对应的公有get方法name()和ordinal()。 3. 重写了equals方法,通过==比较两个枚举值的内存地址来判断两者是否相同。 4....){ super(name, ordinal); this.mood = mood; this.index = index; } 五、让相同枚举类型下的枚举值具有不同的行为——重写枚举值的方法...RED和BLUE同一个方法具有不同的行为。
中你也要创建相应的枚举类型: public enum AnimalType { DOG, CAT, SQUIRREL; } Java中枚举类型和PostgreSQL中枚举类型的转换是很直接的...; 注:这两种SQL语句作用是一样的。 PostgreSQL还可以允许你传递一个String类型的字符来进行对数据库中枚举类型数据的插入或者更新。...在Java端代码都是一一样的,你像下面一样可以设置字段的值: stmt.setInt(1, 1); stmt.setString(2, AnimalType.DOG.toString()); stmt.setString...(3, 'Rex'); 从数据库中提取枚举枚举类型的值也很简单: AnimalType.valueOf(stmt.getString("pet_type")); 考虑到枚举类型时大小写敏感的,...而且PostgreSQL中的enum枚举类型不是标准的SQL类型所以不具有可移植性。
java枚举类型的原理 说明 1、Java追加了java.lang.Enum抽象类,是所有的枚举类型的基础类。提供了基本的属性和基本的方法。...同时,支持将枚举作为Set和Map使用 2、用关键字enum创建枚举类型并进行编译之后,编译器就会为我们生成一个相关的类别,它继承了java.lang.Enum类。...public abstract class Enum> implements Comparable, Serializable { // 枚举的常量名... private final String name; public final String name() { return name; } // 枚举的序号...枚举类型的原理,希望对大家有所帮助。
public enum Spiciness{ NOT,MILD,MEDIUM,HOT,FLAMING } 这里创建了一个名为Spiciness的枚举类型,它具有5个具名值,由于枚举类型的实例是常量...,因此按照命名惯例它们都用大写字母表示(如果在一个名字中有多个单词,用下划线将它们隔开) 为了使用enum,需要创建一个该类型的引用,并将其赋值给某个实例: public class SimpleEnumUse...编译器还会创建ordinal()方法,用来表示某个特定enum常量的声明顺序,以及static values()方法,用来按照enum常量的声明顺序,产生由这些常量值构成的数组 public class...plain.describe(); greenChile.describe(); jalaeno.describe(); } } 大体上,你可以将enum用作另外一个创建数据类型的方式...,然后直接将所得到的类型拿来使用,这正是关键所在。
产生: 数据类型 dict,list,tuple,set 等等有时并不适用 使用: 引入模块:form enum import Enum 示例: 所有的枚举类型都是Enum类的子类,Py中没有enum这个数据类型...: 上述实现方式,对应关系均是可变的,可以发生赋值 上述均没有防止重复的功能,不同类型对应值可能相同 枚举的要求: 类型一般不能随意更改 类型一般不能出现重复 对于枚举类型...: Attempted to reuse key: 'BLACK' 综上: 枚举类型可以保证类型名称的不重复性、并且保护类型不被修改 注意: 区别于枚举名称的重复(不允许): class...in EMP1: print(x) 输出: EMP1.BLACK EMP1.RED 上述将EMP1类中的全部枚举类型都打印出来 枚举类型的比较: 限定:同一枚举类中的枚举类型...print( EMP1.BLACK == EMP2.BLACK ) #输出 False 注意: 虽然对应类型相同,但是两者属于不同类,无从比较 枚举转换 将数值形式来转换为枚举类型的操作
, SATURDAY, SUNDAY 5} 那我们先来看一下他的概念是啥,枚举类型是Java5新增的特性,他是一种特殊的数据类型,是因为他既是一种类(class)类型,又比普通的类型多了写特殊的约束。...他是不提示我的,可是我如果用枚举,他就可以提示我数据重复,如下图: ? 还有就是不用枚举类型,代码不够简洁,冗余代码太多。...2.枚举是什么 我们先编译一个上面写的Day.java文件,然后反编译他,看他编译出来的结果是什么,如下图: ?...从上图我们可以看出反编译出来Day是一个final类型,也就是不能被其他类继承,并且他是继承于Enum类的。如果我们定义一个枚举类型,其实Java替我们做了定义常量这件事情,也就是上图1的区域。...getDeclaring:与该枚举类型值相对应的类。 ordinal:返回枚举常量的序数。 valueOf:返回带指定名称的指定枚举类型的枚举常量,如果不存在,会直接报错,如下图中标红区域。
在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串、整型),这种数据类型的变量值限定在固定的范围, 比如季节只有春夏秋冬,月份是12个。...Java中的枚举 枚举前时代 在Java语言中, 枚举类型从JDK1.5才开始提供。...,而且定义繁琐,功能也很有限,于是在Java 1.5 中定义了一个枚举类型:`java.lang.Enum`。...Java枚举类实现的原理探求 ava枚举类型的奥秘就在编译阶段,枚举类在编译后会生成了一个扩展java.lang.Enum的类。这个可以通过JDK自带的javap工具来反编译生成的.class文件。...从控制台输出的反编译后的源码可以看出: - 自定义的枚举类会自动继承`java.lang.Enum`类 - 每个成员变量都会被转换为 private static final的枚举类型的实例 - 自动添加