第11章 枚举类型 常数设置与枚举类型 定义枚举类型
第11章 • 枚举类型 – 常数设置与枚举类型 – 定义枚举类型
常数设置 可使用接口来定义操作时所需的共享常数 public interface ActionConstants public static final int TURN LEFT public static final int TURN RIGHT = 2i public static final int SHOT=3
常数设置 • 可使用接口来定义操作时所需的共享常数 public interface ActionConstants { public static final int TURN_LEFT = 1; public static final int TURN_RIGHT = 2; public static final int SHOT = 3; }
常数设置 public void someMethod () i doAction(Actionconstants. TURN RIGHT public void doAction(int action) switch(action) case actionconstants. TURN LEFT System.out. println("向左转") break case actionconstants. TURN RIGHT System.out. println("向右转"); break case actionconstants SHOOT System.out. print1n("射击") break;
常数设置 public void someMethod() { .... doAction(ActionConstants.TURN_RIGHT); .... } public void doAction(int action) { switch(action) { case ActionConstants.TURN_LEFT: System.out.println("向左转"); break; case ActionConstants.TURN_RIGHT: System.out.println("向右转"); break; case ActionConstants.SHOOT: System.out.println("射击"); break; } }
常数设置 使用类别来宣告的话 public class CommandTool public static final String ADMIN =onlyfun caterpillar admin"i public static final String DEVELOPER onlyfun. caterpillar. developer public void someMethod()( 如果常数只是在类别内部使用的话,就宣 告其为“ private”或是“ protected"就可以了 宣告为类别外可取用的常数,通常是与类别功 能相依的常数
常数设置 • 使用类别来宣告的话 • 如果常数只是在类别内部使用的话,就宣 告其为“private”或是“protected”就可以了 – 宣告为类别外可取用的常数,通常是与类别功 能相依的常数 public class CommandTool { public static final String ADMIN = "onlyfun.caterpillar.admin"; public static final String DEVELOPER = "onlyfun.caterpillar.developer"; public void someMethod() { // .... } }
枚举类型入门 要定义枚举类型是使用“enum”矢键词 public enum Action TURN LEFT, TURN R工GHT SHOOT 枚举类型骨子里就是一个类别,所以您编 译完成后,会产生一个 Action class档案
枚举类型入门 • 要定义枚举类型是使用“enum”关键词 • 枚举类型骨子里就是一个类别,所以您编 译完成后,会产生一个Action.class档案 public enum Action { TURN_LEFT, TURN_RIGHT, SHOOT }
枚举类型入门 public class EnumDemo t public static void main(string[] args) t doAction(action. TURN RIGHT)i 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
枚举类型入门 public class EnumDemo { public static void main(String[] args) { doAction(Action.TURN_RIGHT); } 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; } } }
枚举类型入门 doAction0参数列的类型是Acon °如果对 doAction0方法输入其它类型的自变 量,编译程序会回报错误 如果您在" switch"中加入了不属于 Action中 枚举的值,编译程序也会回报错误
枚举类型入门 • doAction()参数列的类型是Action • 如果对doAction()方法输入其它类型的自变 量,编译程序会回报错误 • 如果您在"switch"中加入了不属于Action中 枚举的值,编译程序也会回报错误
枚举类型入门 public static void doAction(Action action) switch(action) i case TURN lefT System.out. print1n("向左转"); breaki case TURN right System.out. print1n("向右转"); break case shoot: System.out. println("射击 break case sTop://Acti○n中没有枚举这个值 System.out, print1n("停止"); break unqualified enumeration constant name required case SToP:
... 枚举类型入门 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; case STOP: //Action中没有枚举这个值 System.out.println("停止"); break; } } ... unqualified enumeration constant name required case STOP:
枚举类型入门 可以在一个独立的档案中宣告枚举值,或 是在某个类别中宣告枚举成员 private enum InnerAction (TuRN LEFT, TURN RIGHT, SHOOT)i public static void main(String[] args) doAction(InnerAction. TURN RIGHT public static void doAction (InnerAction action)
枚举类型入门 • 可以在一个独立的档案中宣告枚举值,或 是在某个类别中宣告枚举成员 private enum InnerAction {TURN_LEFT, TURN_RIGHT, SHOOT}; public static void main(String[] args) { doAction(InnerAction.TURN_RIGHT); } public static void doAction(InnerAction action) { … }
枚举类型入门 枚举类型本质上还是个类别 范例11.5的枚举宣告方式有些像在宣告「内 部类别」( Innerclass) 编译产生 EnumDemo2$ nnerAction class 与 EnumDemo2$1cass
枚举类型入门 • 枚举类型本质上还是个类别 • 范例11.5的枚举宣告方式有些像在宣告「内 部类别」(Innerclass) • 编译产生EnumDemo2$InnerAction.class 与EnumDemo2$1.class