- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!SJC-P 列挙型
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/enums.html
::メンバとして宣言
*独自のクラスとして宣言できる
**public または デフォルト修飾子しか指定できない(9)
*クラスのメンバとして宣言できる(1)
*セミコロンは省略可能(2)
*コンストラクタ(public以外)を定義できる(4)
*メソッドを定義できる(5)
*内容の列挙には、values()メソッド
*メソッド内部に宣言できない(8)
package enumerate;
public class EnumTest1 {
enum DayOfWeek { SUNDAY, MONDAY, THUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY }
enum ENUM_NUM { ONE, TWO, THREE }; // クラスのメンバとして宣言できる(1)
enum ENUM_WEEK { SUN, MON, TUE } // セミコロンは省略可能(2)
public static void main(String[] args) {
DayOfWeek dow = DayOfWeek.FRIDAY;
System.out.println(dow);
enum ENUM_SIZE {
BIG(10), MIDIUM(5), SMALL(1),
UNKNOWN(0) {
public String toString() { // 要素独自のメソッドをオーバーライドできる(3)
return "UNKNOWN";
}
}
;
private int size;
ENUM_SIZE(int size) { // コンストラクタ(public以外)を定義できる(4)
this.size = size;
}
public int getSize() { // メソッドを定義できる(5)
return this.size;
}
public String toString() {
return String.valueOf(this.size);
}
}
}
::別クラスとして宣言
*列挙値にコンストラクタをもてる
*列挙に動作を追加できる
*switch ステートメントで利用できる
*values() static メソッドで、列挙値の配列を取得できる
public enum DayOfWeek {
SUNDAY ("日"),
MONDAY ("月"),
THUESDAY ("火"),
WEDNESDAY("水"),
THURSDAY ("木"),
FRIDAY ("金"),
SATURDAY ("土");
private final String youbi;
// コンストラクタ
DayOfWeek(String youbi) {
this.youbi = youbi;
}
public String toJpString() {
return this.youbi;
}
}
public class EnumTest2 {
public static void main(String[] args) {
DayOfWeek dow = DayOfWeek.FRIDAY;
// 列挙に動作を追加できる
System.out.println(dow.toJpString() + "曜日");
System.out.println(ENUM_SIZE.BIG);
System.out.println(ENUM_SIZE.UNKNOWN);
// switch ステートメントで利用できる
switch(dow) {
case THUESDAY:
case FRIDAY:
System.out.println(dow.toJpString() + "曜日は、燃えるごみの日です。");
// switch 文にて利用できる(6)
ENUM_WEEK color = ENUM_WEEK.TUE;
switch(color) {
case SUN:
System.out.println("日");
break;
default:
case MON:
System.out.println("月");
break;
case TUE:
System.out.println("火");
break;
default:
System.out.println("not match.");
}
// values() static メソッドで、列挙値の配列を取得できる
DayOfWeek[] weeks = DayOfWeek.values();
for (int i=0; i<weeks.length; i++) {
System.out.print("(" + weeks[i].toJpString() +") ");
// 内容の列挙には、values()メソッド(7)
ENUM_NUM[] nums = ENUM_NUM.values();
for (ENUM_NUM num : nums) {
System.out.println(num);
}
}
}
::列挙定数ごとに異なる動作をさせる
*列挙型でメソッドの抽象メソッドを宣言
*定数ごとにオーバーライド
public enum DayOfWeek {
SUNDAY ("日"){
String garbageCollect(){return "収集はありません";}
},
MONDAY ("月"){
String garbageCollect(){return "収集はありません";}
},
THUESDAY ("火"){
String garbageCollect(){return "燃えるごみの日です";}
},
WEDNESDAY("水"){
String garbageCollect(){return "資源ごみの日です";}
},
THURSDAY ("木"){
String garbageCollect(){return "燃えないごみの日です";}
},
FRIDAY ("金"){
String garbageCollect(){return "燃えるごみの日です";}
},
SATURDAY ("土"){
String garbageCollect(){return "収集はありません";}
} ;
private final String youbi;
// コンストラクタ
DayOfWeek(String youbi) {
this.youbi = youbi;
public void testEnum() {
// メソッド内部に宣言できない(8)
// enum ENUM_ALPAH { A, B, C};
}
public String toJpString() {
return this.youbi;
}
// 抽象メソッド
abstract String garbageCollect();
}
public class EnumTest2 {
public static void main(String[] args) {
DayOfWeek dow = DayOfWeek.THUESDAY;
System.out.println(
dow.toJpString() + "曜日は" +
dow.garbageCollect());
}
// public または デフォルト修飾子しか指定できない(9)
/* public */ enum ENUM_COLOR {
RED, GREEN, BLUE
}
::内容を列挙
values()メソッドを使用
public class EnumTest4 {
public static void main(String[] args) {
DayOfWeek[] weeks = DayOfWeek.values();
for (DayOfWeek week : weeks) {
System.out.println(week);
}
}
}
{{amazon 4822282775}}
----
{{include_html banner_html, "!SJC-P"}}