创建枚举类型要使用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; } }} |
MONTUEWEDTHUFRISATSUN----------------我是分隔线------------------今天是星期二 |
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.EnumTestname():
TUEtoString():
TUEordinal():
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
Java枚举详解
本文深入探讨Java中的枚举类型,包括枚举类型的创建、使用、遍历及成员方法的介绍。此外,还介绍了如何为枚举类型添加自定义属性和方法。
1091

被折叠的 条评论
为什么被折叠?



