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<MyEnum> e = MyEnum.One; System.out.println("Enum<MyEnum> : " + 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<MyEnum> : 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; } }
<c:set var="types" value="<%= com.againfly.enumpack.TypeEnum.values() %>"/> <c:forEach var="type" items="${types}"> <option value="${type.name()}" >${type.value}</option> </c:forEach>
最新评论