Java 枚举类型
关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。
public class EnumClass {
enum Shrubbery {GROUND, CARWLING, HANGING}
public static void main(String[] args) {
// TODO Auto-generated method stub
for( Shrubbery s : Shrubbery.values() ) {
System.out.println("ordinal:" + s.ordinal());
System.out.println(s.compareTo(Shrubbery.GROUND));
System.out.println(s.equals(Shrubbery.CARWLING));
System.out.println(s == Shrubbery.CARWLING);
System.out.println(s.getDeclaringClass());
System.out.println(s.name());
System.out.println(s.toString());
System.out.println("===================");
}
for(String name : "GROUND,CARWLING,HANGING".split(",")) {
Shrubbery shrub = Enum.valueOf(Shrubbery.class, name);
System.out.println(shrub);
}
}
}
enum添加描述信息
public enum SzWatch {
WEST("西边"),
EAST("东边"),
SOURTH("南边"),
NORTH("北边");
private String desc;
private SzWatch(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
public static void main(String[] args) {
SzWatch s = SzWatch.WEST;
System.out.println(s.ordinal());
System.out.println(s.name());
System.out.println(s.getDesc());
}
}
再添加一个属性
public enum SzWatch {
WEST("西边",1),
EAST("东边",2),
SOURTH("南边",5),
NORTH("北边",8);
private String desc;
private int flag;
private SzWatch(String desc,int flag) {
this.desc = desc;
this.flag = flag;
}
public String getDesc() {
return desc;
}
public int getFlag() {
return flag;
}
}
switch中的使用
一般情况下必须使用enum类型来修饰一个enum实例,但是在case语句中却不必须如此。
public static void main(String[] args) {
SzWatch s = SzWatch.NORTH;
switch(s) {
case EAST:
System.out.println( "EAST");
break;
case NORTH:
System.out.println( "North");
break;
default :
System.out.println( "lal");
}
}
enum实现方法
package enumclass;
public enum Input {
DOLLAR(10),
SODA(100),
TRANSACTION("desc transaction"),
STOP {
public int amount() { return 0;}
},
ABORT("abort the sys"){
public void print(String str){System.out.println(str);}
};
int num;
String desc;
Input(){}
Input(int value) { this.num = value;} //用于DOLLAR(10)这种描述
Input(String desc) { this.desc = desc; } //用于TRANSACTION("xx")
public int getValue() {
return num;
}
public String getDesc() {
return desc;
}
public int amount(){return -1;} //用于enum的实例方法
public void print(String str){System.out.println(str);}
public static void main(String[] args) {
for(Input s : Input.values()){
System.out.println(s.name());
switch(s) {
case DOLLAR:case SODA:
System.out.println("value:" + s.getValue());break;
case TRANSACTION:
System.out.println("name:"+s.getDesc());break;
case STOP:
System.out.println(s.amount());break;
case ABORT:
s.print(s.getDesc());
System.out.println(s.amount());break;
}
}
}
}