Java Enum 枚舉的簡單使用


一、什么是枚舉

  值類型的一種特殊形式,它從 System.Enum 繼承,並為基礎基元類型的值提供備用名稱。枚舉類型有名稱、基礎類型和一組字段。基礎類型必須是一個內置的有符號(或無符號)整數類型(如 Byte、Int32 或 UInt64)。字段是靜態文本字段,其中的每一個字段都表示常數。所使用的語言給每個字段都分配一個基礎類型的特定值。JDK1.5引入了新的類型——枚舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。

  枚舉類型在C#或C++,java,VB等一些計算機編程語言中是一種基本數據類型而不是構造數據類型,而在C語言等計算機編程語言中是一種構造數據類型  [1]  。它用於聲明一組命名的常數,當一個變量有幾種可能的取值時,可以將它定義為枚舉類型。
枚舉可以根據Integer、Long、Short或Byte中的任意一種數據類型來創建一種新型變量。這種變量能設置為已經定義的一組之中的一個,有效地防止用戶提供無效值。該變量可使代碼更加清晰,因為它可以描述特定的值。
 

二、枚舉的使用

  1、枚舉的定義和簡單訪問

package com.test;

public class EnumProgram {
    //獲得枚舉的常量
    Signal number = Signal.FOUR;
    int n = 0;
    //定義一個方法
    public void calculation(){
            switch (number){
                case ONE:
                    n=1;
                    break;
                case TWO:
                    n=2;
                    break;
                case Three:
                    n=3;
                    break;
                case FOUR:
                    n=4;
                    break;

            }
    }

    public static void main(String[] args) {
        EnumProgram en = new EnumProgram();
        System.out.println(en.n);
        en.calculation();
        System.out.println(en.n);

        System.out.println(Signal.Three);

    }

}

//創建一個枚舉,里面放了 ONE,TWO,Three,FOUR 四個常量
enum Signal{
    ONE,TWO,Three,FOUR
}

結果:

 

  2、向枚舉中添加方法

package com.test;

public class EnumProgram {
    public static void main(String[] args) {
        //使用
        System.out.println(Color.BULE.getName());
        System.out.println(Color.BULE.getIndex());
        System.out.println(Color.getColorName(1));
        System.out.println(Color.getColorIndex("綠色"));
    }
}

//創建一個枚舉
enum Color{
    RED("紅色",1),BULE("藍色",2),GREEN("綠色",3),WHITE("白色",4);
    private String name;
    private int index;

    //構造函數
    private Color(String name,int index){
        this.name=name;
        this.index=index;
    }
    //枚舉方法
    public static String getColorName(int index){
        for(Color c : Color.values()){
            if(c.getIndex()==index){
                return c.getName();
            }
        }
        return null;
    }


    //枚舉方法
    public static int getColorIndex(String name){
        for(Color c : Color.values()){
            if(c.getName()==name){
                return c.getIndex();
            }
        }
        return -1;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }
}

結果:

 

   3、枚舉類繼承接口
package com.test;

public class EnumProgram {
    public static void main(String[] args) {
        //使用
        Color.BULE.print();
    }
}

//定義一個接口
interface FunRea{
    void print(); //定義一個方法
}

//創建一個枚舉,繼承接口
enum Color implements FunRea{
    RED("紅色",1),BULE("藍色",2),GREEN("綠色",3),WHITE("白色",4);
    private String name;
    private int index;

    //構造函數
    private Color(String name,int index){
        this.name=name;
        this.index=index;
    }

    //實現接口的方法
    @Override
    public void print() {
        System.out.println(this.name+" : "+this.index);
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

}

結果:

 

 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM