zoukankan      html  css  js  c++  java
  • java 28

    上一章,自定义了枚举类,超级麻烦。。

    所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>>

      

    注意事项

    •   定义枚举类要用关键字enum
    •   所有枚举类都是Enum的子类
    •   枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
    •   枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
    •   枚举类也可以有抽象方法,但是枚举项必须重写该方法
    •   枚举在switch语句中的使用

    enum的方法:

    除了下面的方法,还有一个方法在API中找不到的:

      values();  : 每个枚举类都具有这个方法,遍历枚举类的所有美剧值。

    1         // values()
    2         // 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
    3         Direction2[] dirs = Direction2.values();
    4         for (Direction2 d2 : dirs) {
    5             System.out.println(d2);
    6             System.out.println(d2.getName());
    7         }

    方法摘要
    protected  Object clone()
              抛出 CloneNotSupportedException。
     int compareTo(E o)
              比较此枚举与指定对象的顺序。
     boolean equals(Object other)
              当指定对象等于此枚举常量时,返回 true。
    protected  void finalize()
              枚举类不能有 finalize 方法。
     Class<E> getDeclaringClass()
              返回与此枚举常量的枚举类型相对应的 Class 对象。
     int hashCode()
              返回枚举常量的哈希码。
     String name()
              返回此枚举常量的名称,在其枚举声明中对其进行声明。
     int ordinal()
              返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
     String toString()
              返回枚举常量的名称,它包含在声明中。
    static
    <T extends Enum<T>>
    T
    valueOf(Class<T> enumType, String name)
              返回带指定名称的指定枚举类型的枚举常量。

    第一版:

    public enum Direction01 {
        FRONT, BENIND, LEFT, RIGHT;
    }

    第二版:

     1 public enum Direction02 {
     2 
     3     FRONT("前"), BENIND("后"), LEFT("左"), RIGHT("右");
     4 
     5     private String name;
     6 
     7     private Direction02(String name) {
     8         this.name = name;
     9     }
    10 
    11     public String getname() {
    12         return name;
    13     }
    14 }

    第三版:

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

    测试类:

     1 public class DirectionDemo {
     2 
     3     public static void main(String[] args) {
     4 
     5         // 打印第一版本
     6         Direction01 d1 = Direction01.FRONT;
     7         System.out.println(d1); // FRONT
     8 
     9         // 打印第二版本
    10         Direction02 d2 = Direction02.FRONT;
    11         System.out.println(d2); // FRONT
    12         System.out.println(d2.getname()); //13 
    14         // 打印第三版本 (枚举在switch语句中的使用)
    15         Direction03 d3 = Direction03.FRONT;
    16 
    17         switch (d3) {
    18         case FRONT:
    19             System.out.println("选择了前");
    20             break;
    21 
    22         case BEHIND:
    23             System.out.println("选择了后");
    24             break;
    25 
    26         case LEFT:
    27             System.out.println("选择了左");
    28             break;
    29 
    30         case RIGHT:
    31             System.out.println("选择了右");
    32             break;
    33 
    34         default:
    35             break;
    36         }
    37 
    38     }
    39 
    40 }
  • 相关阅读:
    .net批量插入SqlServer数据库的方法:
    Google主页中国元宵节
    左岸读书你是想读书,还是想读完书?
    Google主页中国著名教育家和画家 丰子恺先生 诞辰114周年
    【转载】图的遍历
    Google主页爱尔兰作家 布拉姆斯托克诞辰165周年
    诺基亚黯然关闭其在欧洲的最后一个手机工厂的背后
    [POJ 1012] Joseph(约瑟夫)
    台湾南投3.27地震
    左岸读书语不惊人死不休(95)
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5970854.html
Copyright © 2011-2022 走看看