/*
* 可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,
* 不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum。
*/
public enum EnumDemo{
MON("星一",1), TUE("星二",2), WED("星三",3), THU("星四",4), FRI("星五",5), SAT("星六",6),SUN("星日",7),
Red("红",11){
};
String name;
int index;
EnumDemo(String name,int index){
this.name=name;
this.index=index;
}
public String getName(int index){
for(EnumDemo e:EnumDemo.values()){
if(e.index==index)return e.name;
}
return "wrong choice,please input numbers between 1 and 7";
}
public String getName(){
return this.name;
}
public int getIndex(){
return this.index;
}
/**
* 获取枚举对象
* @param key key值
* @return enumDemo或null
*/
public static EnumDemo getEnumDemoByCode(Integer key) {
for (EnumDemo enumDemo : EnumDemo.values()) {
if(key != null && key.intValue() == enumDemo.getIndex()){
return enumDemo;
}
}
return null;
}
}
于vo中使用枚举
public String getEnumDemoView() {
if(key!=null) {
EnumDemo enumDemo = EnumDemo.getEnumDemoByCode(key);
if(enumDemo !=null){
return enumDemo.getName();
}
}
return enumDemoView;
}
EnumSet&&EnumMap
//EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。
EnumSet<EnumDemo> edset=EnumSet.allOf(EnumDemo.class);
for(EnumDemo ed:edset){
// System.out.println(ed);
}
EnumMap<EnumDemo,String> edmap=new EnumMap(EnumDemo.class);
edmap.put(EnumDemo.MON, "星期一");
for(Iterator it=edmap.entrySet().iterator();it.hasNext();){
Map.Entry<EnumDemo,String> m=(Map.Entry) it.next();
//System.out.println(it.next().toString());
System.out.println(m.getKey().index+";"+m.getValue());
}
注意:
枚举类型会由JVM在加载的时候实例化枚举对象,JVM为了保证每一个枚举类元素的唯一实例,把构造函数设计成private,以此防止用户生成实例,破坏唯一性。
因此,当修改构造方法的访问级别时,编译器会报错.当然,如果在构造器前面加上private.编译器会提示我们redundant(多余的).