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="-初始值-"/>