トップ 一覧 ping 検索 ヘルプ RSS ログイン

SJC-P 列挙型の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!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"}}