java小記--枚舉類

枚舉類

如果一個類的對象是有限和固定的,則可以使用枚舉類
默認繼承 java.lang.Enum 類,所以不能繼承其他父類;其中 java.lang.Enum 類實現了 java.lang.Serializable 和 java.lang.Comparable 接口;
使用 enum 定義,默認使用 final 修飾,因此不能派生子類;
構造器默認使用 private 修飾,且只能使用 private 修飾;
枚舉類所有實例必須在第一行給出,默認添加 public static final 修飾,否則無法產生實例;

定義

/**
枚舉類
*/
enum Clor{
	RED,GREEN,BLUE
}
//相等與
public final class Color extends Enum { // 繼承自Enum,標記爲final class
    // 每個實例均爲全局唯一:
    public static final Color RED = new Color();
    public static final Color GREEN = new Color();
    public static final Color BLUE = new Color();
    // private構造方法,確保外部無法調用new操作符:
    private Color() {}
}

enum其實就是一個類
有以下特點:
每個枚舉值都一個class實例;
定義的enum類型總是繼承自java.lang.Enum,且無法被繼承;
只能定義出enum的實例,而無法通過new操作符創建enum的實例;
定義的每個實例都是引用類型的唯一實例;
可以將enum類型用於switch語句。

方法


public class Main {

    public static void main(String[] args) {

        //values() 包括所有枚舉變量的數組
        for (Clor w:Clor.values()) {
            System.out.println(w);
           /*
           RED
            GREEN
            BLUE
            */
        }
        System.out.println(Clor.RED);//RED ;
        System.out.println(Clor1.RED);//RED ;
        System.out.println(Clor2.RED);//紅色 ;
        //name()返回常量名
        System.out.println(Clor.RED.name());//RED ;

        //toString()若未重寫,返回常量名
        System.out.println(Clor.RED.toString());//RED ;
        System.out.println(Clor2.RED.toString());//紅色 ;

        //ordinal() 返回定義的常量的順序,從0開始計數
        System.out.println(Clor.RED.ordinal());//0
        System.out.println(Clor1.RED.ordinal());//1
        System.out.println(Clor2.RED.dayValue);//1


        //switch

    }
}

enum Clor{
    RED,GREEN,BLUE;
}

enum Clor1{
    GREEN,RED,BLUE;
}

enum Clor2{
    GREEN(0,"綠色"),RED(1,"紅色"),BLUE(2,"藍色");

    public final int dayValue;//順序號
    public final String name;

    private Clor2(int value,String name){
        this.dayValue = value;
        this.name = name;
    }

    @Override
    public String toString() {
        return this.name;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章