例:
package 枚举类型;
public enum Action {
TURN_LEFT,
TURN_RIGHT,
SHOOT
}
枚举类型本质上是个类,所以编译完成后会产生一个Action.class文件
(内嵌类)
使用实例:
package 枚举类型;
public class EnumDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static void doAction(Action action){
switch(action){
case TURN_LEFT:
System.out.println("向左转");
break;
case TURN_RIGHT:
System.out.println("向右转");
break;
case SHOOT:
System.out.println("射击");
break;
}
}
}
当使用enum定义枚举类型时,实际上所定义出来的类型是继承自java.lang.Enum类,而每个被枚举的成员其实就是定义的枚举类型的一个实例,他们都被默认为final。无法改变常数名称所设置的值,他们也是public static的成员。可以通过类名称直接使用它们
例:
package 枚举类型;
public class EnumDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static void doAction(Action action){
switch(action){
case TURN_LEFT:
System.out.println("向左转");
break;
case TURN_RIGHT:
System.out.println("向右转");
break;
case SHOOT:
System.out.println("射击");
break;
}
}
}
运行结果:
TURN_LEFT
TURN_RIGHT
SHOOT
例:
使用静态的valueOf()方法——将指定的字符串尝试转换为枚举实例
compareTo()方法——比较两个枚举对象在枚举时的顺序
package 枚举类型;
public class EnumCompareTo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
compareToAction(Action.valueOf(args[0]));
}
public static void compareToAction(Action inputAction){
System.out.println("输入:"+inputAction);
for(Action action:Action.values()){
System.out.println(action.compareTo(inputAction));
}
}
}
例:
package 枚举类型;
public enum DetailAction {
TURN_LEFT,TURN_RIGHT,SHOOT;
public String getDescription(){
switch(this.ordinal()){
case 0:
return "向左转";
case 1:
return "向右转";
case 2:
return "射击";
default:
return null;
}
}
}
测试类:
package 枚举类型;
public class DetailActionDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(DetailAction action:DetailAction.values()){
System.out.printf("%s:%s%n",action,action.getDescription());
}
}
}
运行结果:
TURN_LEFT:向左转
TURN_RIGHT:向右转
SHOOT:射击
Thursday, April 23, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment