JDK1.5之后Java添加了Enum枚举型,一般情况下可以用来保证一组定义好的数据常量,比如日期,时间,颜色,状态等情况,同时也可以利用Enum来实现单例。
这里简单的实现一些Enum的操作方法和实现。
首先自己定义了一个Enum
public enum MyEnum {
One("A", 1), Two("B", 2), Three("C", 3);
private String key;
int value;
private MyEnum(String key, int value) {
this.key = key;
this.value = value;
}
/**
* 根据Key的值获取到第一个匹配的Enum
*/
public static MyEnum getByKey(String key) {
for (MyEnum e : values()) {
if (e.key.equals(key))
return e;
}
return null;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
现在我们来测试一下Enum的一些使用方法
Enum e = MyEnum.One;
System.out.println("Enum: " + e);
//获取该Enum定义的Name值
System.out.println("MyEnum.One.name: " + MyEnum.One.name());
//定义的Enum,Key设置为了private,通过public的getKey方法获取key的值
System.out.println("MyEnum.One.getKey: " + MyEnum.One.getKey());
//定义的Enum,value设置为了public,直接通过value方式获取value值
System.out.println("MyEnum.One.value: " + MyEnum.One.value);
//获取指定的Enum在序列中排第n个,排序从0开始
System.out.println("MyEnum.One.ordinal: " + MyEnum.One.ordinal());
/*
* 在enum中定义一个public static 的方法,
* 可以根据Key的值获取到第一个匹配的Enum
*/
System.out.println("MyEnum.getByKey: " + MyEnum.getByKey("A"));
//Enum自带方法,根据Name值获取指定的Enum
System.out.println("MyEnum.valueOf: " + MyEnum.valueOf("One"));
//Enum自带方法,根据Name值获取指定定义的Enum
System.out.println("MyEnum.valueOf: " + Enum.valueOf(MyEnum.class, "One"));
运行之后查看一下Console控制台
Enum: One
MyEnum.One.name: One
MyEnum.One.getKey: A
MyEnum.One.value: 1
MyEnum.One.ordinal: 0
MyEnum.getByKey: One
MyEnum.valueOf: One
MyEnum.valueOf: One
/_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_//_/
JSP中使用Enum遍历
package com.againfly.enumpack;
public enum TypeEnum {
DVR("DVR"), NVR("NVR");
private String value;;
private HostTypeEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
${type.value}