Java基礎-枚舉

多例設計模式:
特色: 構造方法私有化,類內部提供多個實例化對象,後面經過static方法返回java

class Color {
    private static final Color RED = new Color("RED");
    private static final Color GREEN = new Color("GREEN");
    private static final Color BLUE = new Color("BLUE");
    
    private String title;
    private Color(String title) {
        this.title = title;
    }

    private static Color getInstance(int ch) {
        switch (ch) {
            case 0 : return RED;
            case 1 : return GREEN;
            case 2 : return BLUE;
            default: return null;
        }
    }
    public String toString() {
        return this.title;
    }

    public class TestDemo {
        public static void main(String[] args) {
            System.out.println(Color.getInstance(0));
        }
    }
}

上面的代碼是在JDK1.5 以前的作法,目的在於限制本類實例化對象的產生個數。可是JDK1.5以後用枚舉進行代替,能夠大大簡化面試

enum Color {
    RED, GREEN, BLUE;
}

public class TestDemo {
    public static void main(String[] args) {
        System.out.println(Color.RED);
    }
}

實際上枚舉就是一種高級的多例設計模式。設計模式

Enum類

enum是對一種類型的包裝,本質是一個class 定義的類繼承了java.lang.Enum父類
public abstract class Enum<E extends Enum<E>> extends Object implements Comparable<E>, Serializable數組

Enum類中的方法
構造方法: protectd Enum(String name, int ordinal);this

  • 當定義枚舉類中的對象時,系統自動進行了序號的

取得枚舉名字: public final String name()
取得枚舉序號: public final int ordinal()
取得全部的枚舉數據: values() 返回的是枚舉的對象數組設計

// values() 方法的使用
public class TestDemo {
    public static void main(String[] args) {
        for (Color temp : Color.values()) { //values能夠看作枚舉和多例的區別
            System.out.println(temp.ordinal() + " = " + temp.name()); 
            //返回: 0 = RED 1 = GREEN 2 = BLUE
        }
    }
}

面試題:解釋enum 和 Enum的區別
enum 是一個關鍵字, 使用enum定義的枚舉類本質上就至關於一個類繼承了Enum這個抽象類code

定義枚舉的其它結構

多例設計是在一個類當中產生的,在類中能夠定義更多的屬性或方法對象

枚舉提供更強大的設計方案 + 屬性 + 方法 + 接口 在枚舉中定義更多的結構繼承

enum Color {
    RED("紅色"), GREEN("綠色"), BLUE("藍色"); // 若是定義有許多內容,枚舉對象必須在第一行
    private String title;
    private Color(String title) { // 構造方法必定不能用public, 多例設計的原則
        this.title = title;
    }
    public String toString() {
        return this.title;
    }
}

public class TestDemo {
    public static void main(String[] args) {
        System.out.println(Color.RED);
    }
}
相關文章
相關標籤/搜索