對Java中的枚舉類型的學習總結

來源:互聯網
上載者:User

Java中的Enum使用

Enum是在Java中用來定義枚舉類型的關鍵字。Enum一般用來表示一相同類型的常量,如性別、日期
色等.

下面是一個最簡單的枚舉。

public enum Color

{

RED,

GREEN,

BLUE

}

實際上在Java中枚舉類型本質上就是一個類,其繼承自java.lang.Enum類。

通過預設提供的GetValues()方法可以擷取所有枚舉對象,其以一個數組的形式返回。

for(Color color : Color.values())

{

System.out.printf("%s: %s%n",color,color.toString());

}

輸出結果為:

RED: RED

GREEN: GREEN

BLUE: BLUE

既然是enum本質上是類,那麼我們當然可以給其加一些方法。注意最後一個枚舉對象要使用“;”結尾,說明枚舉值結束使用。

public enum Color

{

RED("Red Color"),

GREEN("Green Color"),

BLUE("Blue Color");

private final String
color;

 

private Color(String color) {

    this.color = color;

}

public String getColor() {

return
color;

}

}

注意在enum中是不能聲明public的建構函式的,這樣是為了避免直接執行個體化enum對象。

我們可以通過getValues方法調用getColor()方法。

for(Color color : Color.values())

{

System.out.printf("%s: %s%n",color,color.getColor());

}

以下是輸出結果:

RED: Red Color

GREEN: Green Color

BLUE: Blue Color

如果大家還是看不太明白的話,我可以展示一個類來對個對比。

public final class Color extends java.lang.Enum{

    public static final Color RED;

    public static final Color GREEN;

    public static final Color  BLUE;

    static {};

    public java.lang.String getColor();

    public static Color[] values();

    public static Color valueOf(java.lang.String);

}

這個類的作用完全等同於我們的Color枚舉對象。而每個被枚舉的成員其實就是定義的枚舉類型的一個執行個體,它們都被預設為final。無法改變常數名稱所設定的值,它們也是public和static的成員,這與介面中的常量限制相同。可以通過類名稱直接使用它們。

所以我們大膽的在裡面增加一些其它的方法來實現我們的新特性。

在這裡我增加了一個新的方法isRed()來判斷當前枚舉執行個體是否是紅色的。

public enum Color

{

RED("Red Color"),

GREEN("Green Color"),

BLUE("Blue Color");

private final String
color;

 

private Color(String color) {

    this.color = color;

}

public String getColor() {

return
color;

}

public boolean isRed()

{

return
this.equals(RED);

}

}

可以對其進行一個測試。

Color green = Color.GREEN;

System.out.print(green.isRed());

Color red = Color.RED;

System.out.print(red.isRed());

第一個輸出結果為false,第二個輸出結果為true。

我也可以簡單的講解下c#中的枚舉對象。在c#中聲明枚舉對象的關鍵字是enum。

 訪問修辭符 enum
名:基類型
    {
        枚
    }

類型必能夠表示中定的所有枚值。聲明可以式地聲明
byte、sbyte、short、ushort、int、uint、long
或 ulong 類型作為對應的基類型。沒有式地聲明基類型的枚聲明意味著所對應的基類型是
int.

public enum Color

{

RED,

GREEN,

BLUE

}

所以我們可以直接將一個枚舉類型強制轉換成其對應的基礎類型。

Int  num = (int)Color.Red;

Num的值為0.

我們也可以反向轉換。

Color color = (Color)num;

甚至我們還可以對枚舉類型進行與或運算。這些就不細說了,有興趣的可以查閱相關資料。

        

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.