java枚举类型

java枚举类型enum

枚举类型是java 5新增特性的一部分,是一种特殊的数据类型(既是一种类类型但是又比类类型多些特殊的约束)

枚举定义的方式:

1public enum Day{ 2 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY 3}

定义枚举类型使用的关键字是enum,与class类似。一般枚举类型的值都是大写的字母,多个值之间以逗号分隔。
枚举类型可以单独的定义,也可以定义在其他类内部。

使用方式:
最简单的就是枚举值的直接引用

1public static void main(String[] args){ 2 Day day = day.MONDAY; 3}

实现原理
在使用enum关键字创建枚举类型并编译后,编译器会生成一个相关的类,这个类继承了java API中的java.lang.Enum类。
也就是说实际enum枚举类型是一个继承java.lang.Enum的类。枚举类型中的枚举值,编译后其实都枚举类型的对象,在静态块中初始化。

Enum抽象类的常见方法
int compareTo(E o)           比较此枚举与指定对象的顺序,返回该枚举序号减去指定枚举序号
boolean equals(Object o)         当指定对象等于此枚举常量时,返回true
Class<?> getDeclaringClass()      返回与此枚举常量的枚举类型相对应的Class
String name()                                        返回此枚举常量名称
int ordinal()                                            返回枚举常量的序数(初始为0)
String toString()                                     返回枚举常量的名称
static<T extends Enum<T>> T static valueOf(Class<T> enumType,String name)                             返回带指定名称的指定枚举类型的枚举常量

枚举类型继承Enum,编译后生成values(),values()方法的作用就是获取枚举类中的所有变量,并作为数组返回
valueOf(String name) 与Enum类中的方法类似,获取对应的枚举对象

枚举类型的进阶使用
枚举类型本质上来说就是一个类,也可以跟普通类一样,定义构造方法、成员变量、普通方法,也可以重写Enum的方法。
此外,还可以定义抽象方法,使具体枚举值实现抽象方法,以便产生不同行为。

1public enum EnumDemo{ 2 FIRST{ 3 public String getInfo(){ 4 return "FIRST TIME"; 5 } 6}, 7 8SECOND{ 9 public String getInfo(){ 10 return "SECOND TIME"; 11 } 12} 13 14 //定义抽象方法 15 public abstract String getInfo(); 16}

由于单继承的原因,enum类不能再继承其他类,但不妨碍它实现接口,因此enum类同样可以实现多接口。

1interface food{ 2 void eat(); 3} 4 5interface sport{ 6 void run(); 7} 8 9public enum EnumDemo2 implements food,sport{ 10 FOOD, 11 SPORT, 12 ; //这里有分隔符 13 14 15 @Override 16 public void eat(){ 17 System.out.println("eat....."); 18 } 19 20 @Override 21 public void run() { 22 System.out.println("run....."); 23 } 24 25}

枚举与switch
switch对枚举类型也进行了支持

1enum Color {GREEN,RED,BLUE} 2 3public class EnumDemo4 { 4 5 public static void printName(Color color){ 6 switch (color){ 7 case BLUE: //无需使用Color进行引用 8 System.out.println("蓝色"); 9 break; 10 case RED: 11 System.out.println("红色"); 12 break; 13 case GREEN: 14 System.out.println("绿色"); 15 break; 16 } 17 } 18 19 20 public static void main(String[] args){ 21 printName(Color.BLUE); 22 printName(Color.RED); 23 printName(Color.GREEN); 24 } 25}

以上学习内容感谢 https://www.cnblogs.com/alter888/p/9163612.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java枚举类型enum的使用

java枚举类型enum的使用最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用publicfinalstatic 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽

java枚举

https://www.cnblogs.com/hyl8218/p/5088287.html摘抄并自查语法(定义)创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类。枚举类符合通用模式ClassEnum<EextendsEnum<E,而E表示枚举类型的名称。枚举类型的每一