54. 列挙型

54. 列挙型

Enumクラス

L:\lesson126\test.java

class test {
    public static void main(String args[]) {
        System.out.println(OStan.WIN95);
        System.out.println(OStan.WIN98);
        System.out.println(OStan.WINME);
        System.out.println(OStan.WIN2K);
        System.out.println(OStan.WINXP);

        System.out.println("");

        for(OStan obj : OStan.values()) {
            System.out.println(obj.name());
        }

        System.out.println("");

        Servernt saver    = new Servernt("アーサー王" ,   ServerntClass.SAVER);
        Servernt archer   = new Servernt("エミヤ" ,       ServerntClass.ARCHER);
        Servernt assassin = new Servernt("佐々木小次郎" , ServerntClass.ASSASSIN);

        System.out.println(saver);
        System.out.println(archer);
        System.out.println(assassin);
    }
}

enum OStan { 
    WIN95, WIN98, WINME, WIN2K, WINXP
};

enum ServerntClass { 
    SAVER , ARCHER , BERSERKER , LANCER , ASSASSIN , CASTER , RIDER
}

class Servernt {
    private ServerntClass servernt;
    private String name;

    public Servernt(String name , ServerntClass servernt) {
        this.name = name;
        this.servernt = servernt;
    }
    public String toString() { return name + " : " + servernt; }
}

実行結果

L:\lesson126>java test
WIN95
WIN98
WINME
WIN2K
WINXP

WIN95
WIN98
WINME
WIN2K
WINXP

アーサー王 : SAVER
エミヤ : ARCHER
佐々木小次郎 : ASSASSIN

L:\lesson126>javap OStan
Compiled from "test.java"
final class OStan extends java.lang.Enum{
public static final OStan WIN95;
public static final OStan WIN98;
public static final OStan WINME;
public static final OStan WIN2K;
public static final OStan WINXP;
public static OStan[] values();
public static OStan valueOf(java.lang.String);
static {};
}

enum 型の比較

L:\lesson127\test.java

class test {
    public static void main(String args[]) {
        for(OStan obj : OStan.values()) {
            System.out.println(obj + "=" + getOStan(obj));
        }
    }

    public static String getOStan(OStan ostan) {
        switch(ostan) {
        case WIN95:
            return "一途な、女ですから";
        case WIN98:
            return "ボクだって、やる時はやる女だよ";
        case WINME:
            return "壊れる、女ですから";
        case WIN2K:
            return "頼れる、女ですから";
        case WINXP:
            return "おせっかいな、女ですから";
        }
        return null;
    }
}

enum OStan { 
    WIN95, WIN98, WINME, WIN2K, WINXP
}

実行結果

L:\lesson127>java test
WIN95=一途な、女ですから
WIN98=ボクだって、やる時はやる女だよ
WINME=壊れる、女ですから
WIN2K=頼れる、女ですから
WINXP=おせっかいな、女ですから

enum クラスの拡張

L:\lesson128\test.java

class test {
    public static void main(String args[]) {
        for(OStan obj : OStan.values()) {
            System.out.println(obj + "=" + obj.getText());
        }

        System.out.println();

        for(OStan2 obj : OStan2.values()) {
            System.out.println(obj);
        }
    }

}

enum OStan { 
    WIN95, WIN98, WINME, WIN2K, WINXP;

    public String getText() {
        switch(this) {
        case WIN95:
            return "一途な、女ですから";
        case WIN98:
            return "ボクだって、やる時はやる女だよ";
        case WINME:
            return "壊れる、女ですから";
        case WIN2K:
            return "頼れる、女ですから";
        case WINXP:
            return "おせっかいな、女ですから";
        }
        return null;
    }
}

enum OStan2 { 
    WIN95("一途な、女ですから"),
    WIN98("ボクだって、やる時はやる女だよ"),
    WINME("壊れる、女ですから"),
    WIN2K("頼れる、女ですから"),
    WINXP("おせっかいな、女ですから");

    private final String text;

    private OStan2(String text) {
        this.text = text;
    }

    public String toString() {
        return name() + "=" + this.text;
    }
}

実行結果

L:\lesson128>java test
WIN95=一途な、女ですから
WIN98=ボクだって、やる時はやる女だよ
WINME=壊れる、女ですから
WIN2K=頼れる、女ですから
WINXP=おせっかいな、女ですから

WIN95=一途な、女ですから
WIN98=ボクだって、やる時はやる女だよ
WINME=壊れる、女ですから
WIN2K=頼れる、女ですから
WINXP=おせっかいな、女ですから