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
WINXPWIN95
WIN98
WINME
WIN2K
WINXPアーサー王 : SAVER
エミヤ : ARCHER
佐々木小次郎 : ASSASSINL:\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=おせっかいな、女ですから