/**
* 狙击手活动 */ public interface SharpShooter_1 { public static final int LOCKED = 1; //锁定 public static final int AIM = 2; //瞄准 public static final int SHOOT = 3; //射击 } /**
* 测试方法 */ public class TestDemo_1 { public static void main(String args[]) { TestDemo_1 test = new TestDemo_1(); test.doAction(1); test.doAction(2); test.doAction(3); test.doAction(4); } /** * 执行的动作 * @param action */ public void doAction(int action) { switch (action) { case SharpShooter_1.LOCKED: System.out.println("1:锁定目标"); break; case SharpShooter_1.AIM: System.out.println("2:瞄准目标"); break; case SharpShooter_1.SHOOT: System.out.println("3:射击"); break; default: System.out.println("×:游戏还没有定义此动作!"); } } } /**
* 测试普通枚举类型 */ public class TestDemo_2 { public static void main(String args[]){ TestDemo_2 test=new TestDemo_2(); test.doAction(SharpShooter_2.LOCKED); test.doAction(SharpShooter_2.AIM); test.doAction(SharpShooter_2.SHOOT); } /** * 执行的动作 * @param action */ public void doAction(SharpShooter_2 action) { switch (action) { case LOCKED: System.out.println("1:锁定目标"); break; case AIM: System.out.println("2:瞄准目标"); break; case SHOOT: System.out.println("3:射击"); break; default: System.out.println("×:游戏还没有定义此动作!"); } } } 返回与此枚举常量的枚举类型相对应的 Class 对象。当且仅当 e1.getDeclaringClass() == e2.getDeclaringClass() 时,两个枚举常量 e1 和 e2 的枚举类型才相同。(由该方法返回的值不同于由 Object.getClass() 方法返回的值,Object.getClass() 方法用于带有特定常量的类主体的枚举常量。)
/**
* 带方法的枚举类型 */ public enum SharpShooter_3 { LOCKED, AIM, SHOOT; public String getDesc() { switch (this.ordinal()) { case 0: return "锁定目标"; case 1: return "瞄准目标"; case 2: return "射击"; default: return "没有该枚举值!"; } } } /**
* 带私有构造方法的枚举类型 */ public enum SharpShooter_4 { LOCKED("锁定目标"), AIM("瞄准目标"), SHOOT("射击"); private String desc; //枚举说明 /** * 私有的构造方法 */ private SharpShooter_4(String desc){ this.desc=desc; } /** * 获取枚举值的说明 * @return String */ public String getDesc(){ return desc; } } /**
* 实现了接口的枚举类型 */ public enum SharpShooter_5 implements IDesc { LOCKED("锁定目标"), AIM("瞄准目标"), SHOOT("射击"); private String desc; //枚举说明 /** * 私有的构造方法 */ private SharpShooter_5(String desc) { this.desc = desc; } public String getDesc() { return desc; } } /**
* 每个枚举值自己实现接口 */ public enum SharpShooter_6 implements IDesc { LOCKED(){ public String getDesc() { return "锁定目标"; } }, AIM{ public String getDesc() { return "瞄准目标"; } }, SHOOT{ public String getDesc() { return "射击"; } } } /**
* 带有抽象方法的枚举类型 */ public enum SharpShooter_7 { LOCKED(){ public String getDesc() { return "锁定目标"; } }, AIM{ public String getDesc() { return "瞄准目标"; } }, SHOOT{ public String getDesc() { return "射击"; } }; /** * 抽象方法,每个枚举值都必须自己实现 * * @return String */ public abstract String getDesc(); } 枚 举的本质是类,在没有枚举之前,仍然可以按照java最基本的编程手段来解决需要用到枚举的地方。枚举屏蔽了枚举值的类型信息,不像在用 public static final定义变量必须指定类型。枚举是用来构建常量数据结构的模板,这个模板可扩展。枚举的使用增强了程序的健壮性,比如在引用一个不存在的枚举值的时 候,编译器会报错。枚举的更多用法还需要在开发中去研究创造,Java5、Java6增加了不少新的特性,技术在升级,对程序员来说就要学习。 |