JDK 5-列挙
2279 ワード
一般クラスシミュレーションの列挙の使用
抽象クラスシミュレーションの列挙の使用
抽象クラスシミュレーションを使用すると、toString()がif-else文を大量に書くことを免除でき、オブジェクトごとに判断する必要はなく、具体的な実装クラスが完了するだけでよい.
列挙クラス
通常の列挙クラスの末尾にセミコロンを書く必要はありません
バンド構造パラメータ列挙
列挙の各変数はstatic finalです
抽象関数付き列挙
クラス内のメソッドの列挙
toString() - String name() - String ordinal() - int valueOf(String name) - Weekday values() - Weekday[] ... ...
public class Weekday {
private Weekday() {} //
public static final Weekday MONDAY = new Weekday(); //
public static final Weekday TUESDAY = new Weekday();
public String toString() {
if(this == MONDAY)
return "Monday";
else if(...) ...
}
}
抽象クラスシミュレーションの列挙の使用
public abstract class Weekday {
private Weekday() {}
public final static Weekday MONDAY = new Weekday() {
public Weekday nextDay() {
return TUESDAY;
}
};
public final static Weekday TUESDAY = new Weekday() {
public Weekday nextDay() {
return WEDNESDAY;
}
};
...
public abstract Weekday nextDay();
}
抽象クラスシミュレーションを使用すると、toString()がif-else文を大量に書くことを免除でき、オブジェクトごとに判断する必要はなく、具体的な実装クラスが完了するだけでよい.
列挙クラス
public enum Weekday {
SUN, MON, TUE, WED, THU, FRI, SAT
}
通常の列挙クラスの末尾にセミコロンを書く必要はありません
バンド構造パラメータ列挙
public enum Weekday {
SUN(5), MON(), TUE(7), WED(), THU(9), FRI, SAT; // ,
private Weekday() {}
private Weekday(int number) {
System.out.println(number);
}
}
列挙の各変数はstatic finalです
抽象関数付き列挙
public enum Weekday { // enum abstract
SUN(5) {
public Weekday nextDay() {
return MON;
}
},
MON() {
public Weekday nextDay() {
return TUE;
}
},
TUE() {
public Weekday nextDay() {
return WED;
}
},
WED() {
public Weekday nextDay() {
return THU;
}
},
THU() {
public Weekday nextDay() {
return FRI;
}
},
FRI() {
public Weekday nextDay() {
return SAT;
}
},
SAT() {
public Weekday nextDay() {
return SUN;
}
};
private Weekday() {}
private Weekday(int number) {
System.out.println(number);
}
public abstract Weekday nextDay();
}
クラス内のメソッドの列挙
toString() - String name() - String ordinal() - int valueOf(String name) - Weekday values() - Weekday[] ... ...