Java枚举使用详解
一、枚举的概念
枚举:在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是特定类型对象的计数。
语法:需要使用enum关键字,在java.lang.enum类(抽象)的子类。
enum EnumTest1 {ONE, TWO, THREE, FOUR, FIVE
}
枚举类型的每一个值都将映射到protected Enum(String name, int ordinal)构造函数中,然后每个值的名称都会被转换成一个字符串。
EnumTest1 etSimple = EnumTest1.ONE;switch(etSimple) {
case ONE:
System.out.println(etSimple.toString());
break;
case TWO:
System.out.println(etSimple.toString());
break;
case THREE:
System.out.println(etSimple.toString());
break;
case FOUR:
System.out.println(etSimple.toString());
break;
case FIVE:
System.out.println(etSimple.toString());
break;
// 如果所有的枚举值都有,那么可以省略default
//default:
// System.out.println(etSimple.toString());
// break;
}
二、自定义属性和方法
enum在Java中是以class的形式被编译器翻译的
// 使用javap EnumTest解析代码得到以下代码
final class EnumTest extends java.lang.Enum<EnumTest> {public static final EnumTest ONE;
public static final EnumTest TWO;
public static EnumTest[] values();
public static EnumTest valueOf(java.lang.String);
static {};
}
这就说明enum本质上是一个类,具有类的部分特性。但enum本身又不是类,enum不能被继承或者继承其他的枚举(java.lang.Enum是抽象类),构造函数只能是private类型(否则编译器会报错)。
既然是一个类,那我们可以为类添加方法和属性
enum EnumTest {MON(1, "星期一"), TUE(2, "星期二"), WED(3, "星期三"), THU(4, "星期四"), FRI(5, "星期五"), SAT(6, "星期六"), SUN(7, "星期日");
// private 可以省略,不能是其他的控制符
private EnumTest(int value, String text) {
this.value = value;
this.valueString = text;
}
// 属性
int value;
String valueString;
// 自定义的方法void testMethod() {
System.out.println("这是一个枚举类型中的方法!!!!");
}
}
EnumTest et = EnumTest.ONE;
System.out.println(et.valueString);
三、常用的枚举方法
int compareTo(E o)// 比较此枚举对象与对象 o 的顺序,同一类型的枚举值
Class<E> getDeclaringClass() // 返回与此枚举常量的枚举类型相对应的Class对象
String name()// 返回枚举常量的名字
String toString()// 返回枚举常量的名称
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)// 返回指定类型的枚举常量
---恢复内容结束---
以上是 Java枚举使用详解 的全部内容, 来源链接: utcz.com/z/394951.html