1. 程式人生 > >Java——列舉

Java——列舉

從JDK1.5開始有了列舉,java中列舉使用enum關鍵字定義,實際上列舉就是一種高階的多例設計模式

enum Color{
    RED,BLUE,GREEN;
}
public class Test {
    public static void main(String[] args) {
        System.out.println(Color.RED);
    }
}

這樣定義的列舉本質上是一個類

1、Enum類

JDK1.5新增的enum列舉結構並不是新的結構,使用enum定義的列舉本質上是一個類,預設繼承java.lang.Enum父類

Enum類中有以下方法

1.構造方法    
    protected Enum(String name, int ordinal)
2.取得列舉名字
    public final String name()
3.取得列舉編號
    public final int ordinal()
4.取得列舉所有物件
    列舉類.values()
    values()返回的是一個列舉的物件陣列。

enum與Enum區別:enum是一個關鍵字,使用enum定義的列舉類本質上就相對於一個類繼承了Enum這個抽象類而已。

2.列舉中定義其他結構

雖然列舉等同於多例設計,但是多例設計是在一個類中產生的,所以該類中可以定義更多的屬性或方法。所以在列舉設計的時候考慮到這些因素,提出了更為全面的設計方案:可以在列舉中定義屬性、方法、內部類、實現介面。

列舉物件必須放在首行宣告

enum Color{
    RED("紅色"),BLUE("藍色"),GREEN("綠色");
    private String title;
    private Color(String titie){//構造方法私有化
        this.title = titie;
    }
    @Override
    public String toString() {
        return this.title;
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println(Color.RED);
    }
}

3.列舉實現介面

此時列舉中的每個物件都成為了介面物件  

interface IColor{
    String getColor();
}
enum Color implements IColor{
    RED("紅色"),BLUE("藍色"),GREEN("綠色");
    private String title;
    private Color(String titie){
        this.title = titie;
    }
    @Override
    public String toString() {
        return this.title;
    }
    @Override
    public String getColor() {
        return title;
    }
}
public class Test {
    public static void main(String[] args) {
        IColor iColor = Color.BLUE;
        System.out.println(Color.RED);
        System.out.println(iColor.getColor());
    }
}