目录

​1 JDK1.5引入了枚举类型​

​2 创建枚举类型​

​3 枚举底层​

​4 枚举的使用​

​5 java 中枚举类enum的values()方法的详解​

​6 枚举其数组化​

​7 Java 查看枚举类成员变量个数​


1 JDK1.5引入了枚举类型

枚举类型的定义包括枚举声明和枚举体。格式如下:

enum  枚举名 {

枚举体(常量列表)

}

枚举体就是放置一些常量。我们可以写出我们的第一个枚举类型,如示例8-27所示:

2 创建枚举类型

Java枚举类型_枚举类

enum Season {    SPRING, SUMMER, AUTUMN, WINDER }

3 枚举底层

Java枚举类型_枚举类型_02Java枚举类型_枚举类_03

Java枚举类型_spring_04

所有的枚举类型隐性地继承自 java.lang.Enum。枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。

注:

1. 当你需要定义一组常量时,可以使用枚举类型。

2. 尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要引入枚举,增加程序的复杂性!

4 枚举的使用

import java.util.Random;
public class TestEnum {
public static void main(String[] args) {
// 枚举遍历
for (Week k : Week.values()) {
System.out.println(k);
}
// switch语句中使用枚举
int a = new Random().nextInt(4); // 生成0,1,2,3的随机数
switch (Season.values()[a]) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case AUTUMN:
System.out.println("秋天");
break;
case WINDTER:
System.out.println("冬天");
break;
}
}
}
/**季节*/
enum Season {
SPRING, SUMMER, AUTUMN, WINDTER
}
/**星期*/
enum Week {
星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日
}

运行效果:

Java枚举类型_枚举类型_05


5 java 中枚举类enum的values()方法的详解

前言:

关于枚举,相信使用的已经很普遍了,现在主要写的是枚举中的一个特殊方法,values(), 为什么说特殊呢,因为在Enum 的 API 文档中也找不到这个方法。接下来就看看具体的使用。

理论上此方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。接下来就展示代码了。

首先是我们自己的枚举类。

public enum EnumDemoFirst { 

RED(1,"hongse"),GREEN(2,"lvse"),YELLOW(3,"huangse");

private int code;
private String msg;


private EnumDemoFirst(int ordinal, String name) {
this.code = ordinal;
this.msg = name;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}


}

然后是测试方法,

public class EnumTest { 

public static void main(String[] args) {
EnumDemoFirst[] values = EnumDemoFirst.values();
for (EnumDemoFirst enumDemoFirst : values) {
System.out.println(enumDemoFirst + "--" + enumDemoFirst.getCode() + "--" + enumDemoFirst.getMsg());
System.out.println("=============");
}
}
}

此时的输出为,

RED--``1``--hongse ``============= 
GREEN--``2``--lvse ``=============
YELLOW--``3``--huangse ``=============

这样的话,通过values() 方法就能很方便的使用枚举了。

6 枚举其数组化

orderIdxOperatorDetailDTO.setOrderSource(OrderSource.values()[consumeRecordDoc.getOrderSource()]);

Java枚举类型_java_06


7 Java 查看枚举类成员变量个数

虽然 Java 枚举类没有直接为我们提供这个属性,但是我们还是可以间接获取:

Java 枚举类的成员方法 values 可以获取枚举类中的所有变量,并作为数组返回。

此时我们就可以利用数组的长度来得知 Java 枚举类中变量的个数,正好数组的 length 属性记录着这个个数。

所以方法就是 Enum.values().length