JAVA枚举类型学习心得

来源:互联网 发布:阿里金融云服务 编辑:程序博客网 时间:2024/05/16 07:23

1.枚举类型的声明用emun关键字

2.没去类型可以定义一个枚举类型的文件也可以放在class类下面,1是枚举类2是定义在class类的枚举变量

     1.public enum Action {

              TRUE_LEFT,
              TRUE_RIGHT,
              SHOOT
          }

      2.private enum InnetEnum{TRUE_LEFT,TRUE_RIGHT,SHOOT}

JAVA枚举类型就是为了更好的管理常量,当我们没有用枚举的时候声明声明的常量放在一个借口来进行管理然后,这样的出错例如:

public interface ActionConstants {

 public static final int TURN_LEFT=1;
 public static final int TURN_TIGHT=2;
 public static final int SHOT=3;
 
}

下面是一个调用类

public static void main(String[] ages) {

  doAtion(ActionConstants.TURN_LEFT);

 }

 /**
  * @param action
  */
 public static void doAtion(int action) {
  switch (action) {
  case ActionConstants.TURN_LEFT:
   System.out.println("向左转");
   break;
  case ActionConstants.TURN_TIGHT:
   System.out.println("向右转");
   break;
  case ActionConstants.SHOT:
   System.out.println("射击");
   break;
  }
 }

注意在调用类里面doAction()的参数只是一个int类型的变量这样我们传入的可以使任意的int类型这样很不安全

看看下面采用枚举类型的例子解决这一点

public enum Action {

 TRUE_LEFT,
 TRUE_RIGHT,
 SHOOT
}

下面是枚举类型的调用类

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  doAction(Action.TRUE_LEFT);
  
  for(Action action:Action.values()){
   System.out.println(action.toString());
  }

 }

 /**
  * 枚举类型的好处是doAtion的参数是Action类型的
  * 而AtionMethod类的doAtion的参数是int类型的这样别人可以输入任意int类型的数据
  * @param action
  */
 public static void doAction(Action action) {
  switch (action) {
  case TRUE_LEFT:
   System.out.println("向左转");
   break;
  case TRUE_RIGHT:
   System.out.println("向右转");
   break;
  case SHOOT:
   System.out.println("射击");
   break;
  }
 }

这里的doAction里面的参数是Action类型的我们必须调用Action里面的声明的常量,这样比起上面安全很多