zoukankan      html  css  js  c++  java
  • java中枚举类的使用详解

     1 /*
     2  * 通过JDK5提供的枚举来做枚举类
     3  */
     4 public enum Direction2 {
     5     FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右");
     6 
     7     private String name;
     8 
     9     private Direction2(String name) {
    10         this.name = name;
    11     }
    12 
    13     public String getName() {
    14         return name;
    15     }
    16 
    17 }

    //-------------------------

    //测试类,每一个对象都是被枚举类放进了数组中,自带索引值。

    枚举类: 格式是:只有枚举项的枚举类
              public enum 枚举类名 {

                                          枚举项1,枚举项2,枚举项3…;

              }
    注意事项
    •定义枚举类要用关键字enum
    •所有枚举类都是Enum的子类
    •枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
    •枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
    •枚举类也可以有抽象方法,但是枚举项必须重写该方法,使用匿名内部类的方式。
    •枚举在switch语句中的使用
     1 public class EnumMethodDemo {
     2     public static void main(String[] args) {
     3         // int compareTo(E o)
     4         Direction2 d21 = Direction2.FRONT;
     5         Direction2 d22 = Direction2.BEHIND;
     6         Direction2 d23 = Direction2.LEFT;
     7         Direction2 d24 = Direction2.RIGHT;
     8         System.out.println(d21.compareTo(d21));
     9         System.out.println(d21.compareTo(d24));
    10         System.out.println(d24.compareTo(d21));
    11         System.out.println("---------------");
    12         // String name()
    13         System.out.println(d21.name());
    14         System.out.println(d22.name());
    15         System.out.println(d23.name());
    16         System.out.println(d24.name());
    17         System.out.println("--------------");
    18         // int ordinal()
    19         System.out.println(d21.ordinal());
    20         System.out.println(d22.ordinal());
    21         System.out.println(d23.ordinal());
    22         System.out.println(d24.ordinal());
    23         System.out.println("--------------");
    24         // String toString()
    25         System.out.println(d21.toString());
    26         System.out.println(d22.toString());
    27         System.out.println(d23.toString());
    28         System.out.println(d24.toString());
    29         System.out.println("--------------");
    30         // <T> T valueOf(Class<T> type,String name)
    31         Direction2 d = Enum.valueOf(Direction2.class, "FRONT");
    32         System.out.println(d.getName());
    33         System.out.println("----------------");
    34         // values()
    35         // 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
    36         Direction2[] dirs = Direction2.values();
    37         for (Direction2 d2 : dirs) {
    38             System.out.println(d2);
    39             System.out.println(d2.getName());
    40         }
    41     }
    42 }

    //----------------------

    //下面贴一个使用匿名内部类创建枚举对象实例的demo

     1 /*
     2  * 通过JDK5提供的枚举来做枚举类
     3  */
     4 public enum Direction3 {
     5     FRONT("前") {
     6         @Override
     7         public void show() {
     8             System.out.println("前");
     9         }
    10     },
    11     BEHIND("后") {
    12         @Override
    13         public void show() {
    14             System.out.println("后");
    15         }
    16     },
    17     LEFT("左") {
    18         @Override
    19         public void show() {
    20             System.out.println("左");
    21         }
    22     },
    23     RIGHT("右") {
    24         @Override
    25         public void show() {
    26             System.out.println("右");
    27         }
    28     };
    29 
    30     private String name;
    31 
    32     private Direction3(String name) {
    33         this.name = name;
    34     }
    35 
    36     public String getName() {
    37         return name;
    38     }
    39 
    40     public abstract void show();
    41 }

    //----------------

    //在switch语句中可以直接只用

    switch (dd) {
      case FRONT:
      System.out.println("你选择了前");
      break;
    case BEHIND:
      System.out.println("你选择了后");
      break;
    case LEFT:
      System.out.println("你选择了左");
      break;
    case RIGHT:
      System.out.println("你选择了右");
      break;
    }

  • 相关阅读:
    leetcode——91.解码方法
    leetcode——64.最小路径和
    Layui上传图片2.0版
    LINQ中判断日期时间段
    Http基础
    Js中数组,字符串的常用方法
    C#数组,ArrayList,List区别
    08-01 通过线性回归了解算法流程
    08-00 课程习得
    C-02 推荐系统
  • 原文地址:https://www.cnblogs.com/fuck1/p/5436595.html
Copyright © 2011-2022 走看看