创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式Class Enum<E extends Enum <E>> 而E标识枚举类型的名称。枚举的每一个人值都将映像到protected Enum(String name,int ordinal)构造函数中。在这里每个值的名称都会被转化为一个字符串,并且序数设置表示了次设置被创建的顺序。
package com.hmw.test; /** *
枚举测试类 *
@author <a href="mailto:hemingwang0902@126.com">何明旺</a> */ public enum EnumTest
{ MON,
TUE, WED, THU, FRI, SAT, SUN; } |
这段代码实际上调用了7次 Enum(String name, int ordinal):
new Enum<EnumTest>( "MON" , 0 ); new Enum<EnumTest>( "TUE" , 1 ); new Enum<EnumTest>( "WED" , 2 ); |
public class Test
{ public static void main(String[]
args) { for (EnumTest
e : EnumTest.values()) { System.out.println(e.toString()); } System.out.println( "----------------我是分隔线---------------" ); EnumTest
test = EnumTest.TUE; switch (test)
{ case MON: System.out.println( "今天是星期一" ); break ; case TUE: System.out.println( "今天是星期二" ); break ; //
... ... default : System.out.println(test); break ; } } } |
MON TUE WED THU FRI SAT SUN ----------------我是分隔线------------------ 今天是星期二 |
public class Test
{ public static void main(String[]
args) { EnumTest
test = EnumTest.TUE; //compareTo(E
o) switch (test.compareTo(EnumTest.MON))
{ case - 1 : System.out.println( "TUE
在 MON 之前" ); break ; case 1 : System.out.println( "TUE
在 MON 之后" ); break ; default : System.out.println( "TUE
与 MON 在同一位置" ); break ; } //getDeclaringClass() System.out.println( "getDeclaringClass():
" +
test.getDeclaringClass().getName()); //name()
和 toString() System.out.println( "name():
" +
test.name()); System.out.println( "toString():
" +
test.toString()); //ordinal(),
返回值是从 0 开始 System.out.println( "ordinal():
" +
test.ordinal()); } } |
TUE
在 MON 之后 getDeclaringClass():
com.hmw.test.EnumTest name():
TUE toString():
TUE ordinal():
1 |
/** 新建 */
create("create1"),
/** 变更 */
modify("create2");
private String test;
private ApplyType(String test) {
this.test = test;
}
@Override
public String toString() {
return String.valueOf(this.test);
}
}
public static void main(String args[]) {
for (ApplyType s : ApplyType.values()) {
System.out.println(s.name());
System.out.println(s.ordinal());
System.out.println(ApplyType.create);
System.out.println(s);
}
System.out.println(ApplyType.valueOf(ApplyType.class, "create"));
System.out.println(BooleanEnum.valueOf(0).name());
System.out.println(ApplyType.values());
System.out.println(ApplyType.valueOf("create").ordinal());
}
结果:create
0
create1
create1
modify
1
create1
create2
create1
否
[Lcom.hd123.hdpos4.mdata.service.game.ApplyType;@4f531f73
0
EnumSet,EnumMap的应用
参考文献
https://www.cnblogs.com/hyl8218/p/5088287.html
http://blog.youkuaiyun.com/wgw335363240/article/details/6359614