Enum枚举类型出现在j2se1.5。
枚举类型的实例都是常量,按照命名规则都用大写字母,单词之间用下划线分隔。
枚举类型的实例名也叫具名值。
在创建枚举时,编译器会自动加上toString()方法。编译器还会加上ordinal()方法,
用来表示枚举的常量的声明顺序,以及static values(),返回按声明顺序构成的常量数组。
创建枚举时,需先定义enum实例,如果在enum实例之前定义了任何方法或属性,
那么在编译时就会报错.
values()方法是由编译器在enum中加的statis,如果你讲enum实例向上转型为Enum,
那么values()方法就不可访问了
内置枚举:写在一个类内部的枚举
内置枚举的好处是可以在类里面写多个枚举,显得简单点
public class TestEnum{
public enum HelloEnum{
//枚举类型
HELLO1("1","hello1"),HELLO2("2","hello2");
HelloEnum(String key,String value){
this.key=key;
this.value=value;
}
private final String key;
private final String value;
public String getKey() {
return key;
}
public String getValue() {
return value;
}
public static Map<String,String> getHelloList(){
Map<String,String> helloMap=new HashMap<String,String>();
helloMap.put("1","hello1");
helloMap.put("2","hello2");
return helloMap;
}
}
public enum Hello1Enum{
......
}
}
freemarker模板里面显示枚举:
一种情况是从枚举中取值:
(1).在struts2的actin中获取枚举的Map
(2).定义一个宏:
<#function getHello param>
<#list helloMap?keys as key>
<#if ((key)?string==param)>
<#return helloMap[key]/>
</#if>
</#list>
</#function>
(3).取枚举值
${getHello(param?string)}
或者将枚举放到select下拉框中
<@s.select list="list" listKey="key" listValue="value" name="object.name" headerKey="-1" headerValue="-初始值-"/>