| 
                             | 
                         
                        
                            
                                J2SE 5.0 codeName Tiger
                             | 
                         
                        
                            
                            | 
                                2006/07/25
                             | 
                         
                        
                            
                            | 
                                @author k.mori
                             | 
                         
                        
                            
                                 
                             | 
                         
                     ■■ コードを簡潔に書くための新文法 Enum  ■■
                        
                            ◎
                            
                                enum
                            型は、あるカテゴリーに属した複数の定数をひとまとまり
                            として取り扱うための仕組みです。J2SE 5.0 の enum は、
                             C や C++ の enum ように内部的に整数で定数を保持するものではなく、
                             タイプセーフ enum と呼ばれるパターンを実現したものになっています。
                             
                             
                            ①関連する定数、例えば月や曜日といった定数を宣言する場合、
                            以下のようにstatic final intを使用して記述することがあります。
                         
                        
                            
                                
                                  static final int
                                
                                   JANUARY=1, FEBRUARY=2, MARCH=3, APRIL=4,
                                
                                   MAY=5, JUNE=6, JULY=7, AUGUST=8,SEPTEMBER=9,
                                
                                   OCTOBER=10, NOVEMBER=11, DECEMBER=12;
                                 
                             | 
                             
                         
                        
                            ②JDK5.0 enumキーワードを使用すると簡潔に宣言することができます。
                             以下は月を表す列挙型を宣言する例です。
                         
                        
                            
                                
                                  enum Month {
                                
                                    JANUARY, FEBRUARY, MARCH, APRIL,
                                
                                    MAY, JUNE, JULY, AUGUST,SEPTEMBER,
                                
                                    OCTOBER, NOVEMBER, DECEMBER
                                
                                   }
                                 
                             | 
                         
                     
                     
                    
                    ②-1 
                    
                    enum Monthには、JANUARYからDECEMBERまでの12個の要素があります。
                    ここでは要素名を英大文字で記述しましたが、一般の識別子と同様に、
                    英小文字、数字、記号などを使用することもできます。
                 
                 
                
                    ②-2 使用方法
                 
                
                    
                        
                        1: public class EnumSample {
                        
                        2:
                        
                        3:    // 列挙型を使用して月の名前を宣言する
                        
                        4:  enum Month {
                        
                        5:       JANUARY, FEBRUARY, MARCH, APRIL,
                        
                        6:       MAY, JUNE, JULY, AUGUST, SEPTEMBER,
                        
                        7:       OCTOBER, NOVEMBER, DECEMBER
                        
                        8:   }
                        
                        9:
                        
                        10:     // 列挙型の変数を宣言して使用する
                        
                        11:  public static void main(String[] args) {
                        
                        12:       Month m=Month.JANUARY;
                        
                        13:       System.out.println(m); // ← JANUARYと表示する
                        
                        14:       System.out.println(Month.FEBRUARY); //←FEBRUARYと表示する
                        
                        15:     }
                        
                        16: }
                        
                         
                     | 
                
             
         
        
        ③ valuesメソッドの使い方
        
        
          valuesメソッドを使用すると、列挙型の全要素を取得することができます。
        
          EnumSample2.javaは、valuesメソッドと拡張forループを組み合わせて、
        
          列挙型Monthの全要素を表示する例です。実行結果は以下のようになります。
        
        
          JANUARY
        
          FEBRUARY
        
          MARCH
        
          APRIL
        
          MAY
        
          JUNE
        
          JULY
        
          AUGUST
        
          SEPTEMBER
        
          OCTOBER
        
          NOVEMBER
        
          DECEMBER
        
     
    
        
            
            1: public class EnumSample2 {
            
            2:
            
            3:     // 列挙型を使用して月の名前を宣言する
            
            4:  enum Month {
            
            5:      JANUARY, FEBRUARY, MARCH, APRIL,
            
            6:      MAY, JUNE, JULY, AUGUST,
            
            7:      SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
            
            8:     }
            
            9:
            
            10:     // 拡張forループとvaluesメソッドを使用して
            
            11:     // 列挙型の全要素を表示する
            
            12:   public static void main(String[] args) {
            
            13:      for (Month m : Month.values()) {
            
            14:            System.out.println(m);
            
            15:      }
            
            16:    }
            
            17: }
             
         | 
     
 
④その他に【equalsメソッド】【compareToメソッド】【ordinalメソッド】があります。
 
 |