枚举类:
JDK1.5以后新增了enum关键字,用来定义枚举类,枚举类是一种特殊的类,
它可以定义成员变量,方法,可以实现一个或者多个接口,也可以定义自己的构造器
它不能继承具体的类,和抽象类,但是可以实现接口,(多实现接口)
它不能直接实例化对象,必须通过valueof实现具体的对象
它有成员变量。和成员方法。
它的父亲是:Enum 而不是Object
DemoEnum类
package test.fanxing;
public enum DemoEnum {
MON(0), TUE(1), WED(2), THU(3), FRI(4), SAT(5), SUN(6);
private int value;
private DemoEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
TestEnum类
package test.fanxing;
public class TestEnum {
public static void main(String[] args) {
// 遍历enum
for (DemoEnum s : DemoEnum.values()) {
System.out.println(s);
}
System.out.println("----------");
DemoEnum demoEnum = DemoEnum.MON;
switch (demoEnum) {
case MON:
System.out.println("今天星期一");
break;
case TUE:
System.out.println("今天星期二");
break;
default:
break;
}
System.out.println("---------------");
System.out.println("DemoEnum.FRI 的value = " + DemoEnum.FRI.getValue());
System.out.println("-----------常用方法--------------");
/**
* int compareTo(E o) 比较此枚举与指定对象的顺序。 Class<E> getDeclaringClass()
* 返回与此枚举常量的枚举类型相对应的 Class 对象。 String name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。
* int ordinal() 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 String toString()
* 返回枚举常量的名称,它包含在声明中。 static <T extends Enum<T>> T valueOf(Class
* <T> enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。
*/
DemoEnum demoEnum2 = DemoEnum.TUE;
switch (demoEnum2.compareTo(DemoEnum.MON)) {
case -1:
System.out.println("TUE 在 MON 之前");
break;
case 1:
System.out.println("TUE 在 MON 之后");
break;
default:
System.out.println("TUE 与 MON 在同一位置");
break;
}
System.out.println("getDeclaringClass(): " + demoEnum2.getDeclaringClass().getName());
System.out.println("name(): " + demoEnum2.name());
System.out.println("ordinal(): " + DemoEnum.TUE.ordinal());
}
}
结果:
MON
TUE
WED
THU
FRI
SAT
SUN
----------
今天星期一
---------------
DemoEnum.FRI 的value = 4
-----------常用方法--------------
TUE 在 MON 之后
getDeclaringClass(): test.fanxing.DemoEnum
name(): TUE
ordinal(): 1