枚舉

 

枚舉的注意事項

1 定義枚舉類要用關鍵字enum

       2 全部枚舉類都是Enum的子類

       3 枚舉類的第一行上必須是枚舉項, 最後一個枚舉項後的分號是能夠省略的,可是若是枚舉類有其餘的東西, 這個分號就不能省略。 建議不要省略

       4 枚舉類能夠有構造器, 但必須是private, 它默認的也是private

       5 枚舉類也能夠有抽象方法,可是枚舉項必須重寫該方法

       6 枚舉在switch語句中的使用
public enum Direction {
    FRONT,BEHIND,LEFT,RIGHT;
}
public enum Direction2 {
    FRONT("前"), BEHIND("後"), LEFT("左"), RIGHT("右");
    private String name;

    Direction2(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


}
public enum Direction3 {
    FRONT("前") {
        @Override
        public void show() {
            System.out.println("前");
        }
    },
    BEHIND("後") {
        @Override
        public void show() {
            System.out.println("後");
        }
    }, LEFT("左") {
        @Override
        public void show() {
            System.out.println("左");
        }
    }, RIGHT("右") {
        @Override
        public void show() {
            System.out.println("右");
        }
    };
    private String name;

    private Direction3(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public abstract void show();

}
public static void main(String[] args) {
    Direction d = Direction.FRONT;
    // FRONT
    System.out.println(d);
    //public String toString();返回枚舉常量的名稱,它包含在聲明中
    System.out.println("--------------");
    Direction2 d2 = Direction2.FRONT;
    // FRONT
    System.out.println(d2);
    // 前
    System.out.println(d2.getName());
    System.out.println("-------------------");
    Direction3 d3 = Direction3.FRONT;
    // FRONT
    System.out.println(d3);
    // 前
    System.out.println(d3.getName());
    // 前
    d3.show();
    System.out.println("=-=-----------------");
    Direction3 dd = Direction3.LEFT;

    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;
    }
}

=============================================================================================ide

public enum Direction2 {
    FRONT("前"), BEHIND("後"), LEFT("左"), RIGHT("右");
    private String name;

    Direction2(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


}
public static void main(String[] args) {
    //public final int compareTo(E o)比較此枚舉與指定對象的順序。
    Direction2 d21 = Direction2.FRONT;
    Direction2 d22 = Direction2.BEHIND;
    Direction2 d23 = Direction2.LEFT;
    Direction2 d24 = Direction2.RIGHT;
    // 0
    System.out.println(d21.compareTo(d21));
    // -3
    System.out.println(d21.compareTo(d24));
    // 3
    System.out.println(d24.compareTo(d21));
    System.out.println("--------------");
    //public final String name()返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明
    // FRONT
    System.out.println(d21.name());
    // BEHIND
    System.out.println(d22.name());
    // LEFT
    System.out.println(d23.name());
    // RIGHT
    System.out.println(d24.name());
    System.out.println("-------------");
    //public final int ordinal()返回枚舉常量的序數
    // 0
    System.out.println(d21.ordinal());
    // 1
    System.out.println(d22.ordinal());
    // 2
    System.out.println(d23.ordinal());
    // 3
    System.out.println(d24.ordinal());
    System.out.println("-------------------");
    //public String toString()返回枚舉常量的名稱,它包含在聲明中
    //能夠重寫此方法
    // FRONT
    System.out.println(d21.toString());
    // BEHIND
    System.out.println(d22.toString());
    // LEFT
    System.out.println(d23.toString());
    // RIGHT
    System.out.println(d24.toString());
    System.out.println("------------");
    //public static <T extends Enum<T>> T valueOf(Class<T> enumType,
    //String name)返回帶指定名稱的指定枚舉類型的枚舉常量
    Direction2 dd = Enum.valueOf(Direction2.class, "FRONT");
    // 前
    System.out.println(dd.getName());
    System.out.println("-------------");
    //values()此方法雖然在JDK文檔中查找不到,單每一個枚舉類都具備該方法
    //它遍歷枚舉類的全部枚舉值很是方便
    Direction2[] direction2s = Direction2.values();
    for (Direction2 d2 : direction2s) {
        /*FRONT
                前
        BEHIND
                後
        LEFT
                左
        RIGHT
                右*/
        System.out.println(d2);
        System.out.println(d2.getName());
    }
}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息