| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

SJC-P 列挙型

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

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 ENUM_NUM  { ONE, TWO, THREE }; // クラスのメンバとして宣言できる(1)
    enum ENUM_WEEK { SUN, MON, TUE   }  // セミコロンは省略可能(2)
    
    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);
        }
    }
    
    public static void main(String[] args) {
        System.out.println(ENUM_SIZE.BIG);
        System.out.println(ENUM_SIZE.UNKNOWN);

        // switch 文にて利用できる(6)
        ENUM_WEEK color = ENUM_WEEK.TUE;
        switch(color) {
        case SUN:
            System.out.println("日");
            break;
        case MON:
            System.out.println("月");
            break;
        case TUE:
            System.out.println("火");
            break;
        default:
            System.out.println("not match.");
        }
        
        // 内容の列挙には、values()メソッド(7)
        ENUM_NUM[] nums = ENUM_NUM.values();
        for (ENUM_NUM num : nums) {
            System.out.println(num);
        }
    }

    public void testEnum() {
        // メソッド内部に宣言できない(8)
        // enum ENUM_ALPAH { A, B, C}; 
    }
}
// public または デフォルト修飾子しか指定できない(9)
/* public */ enum ENUM_COLOR {
    RED, GREEN, BLUE
}