kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

列挙型を初めて使った

Java 5.0の新機能のひとつ、列挙型を初めて使ってみた。これまでは整数の定数値であれこれ判別していたのを、列挙型に置き換える。

Javaの列挙型は、単に自動で設定される整数の定数じゃなくて、オブジェクトになっている。もちろん宣言してある順にもとづいて整数化もできる。宣言してある文字列にも変換できるし、文字列から取得することもできる。さらに、クラスとしてメソッドも定義できる。

たとえば、次のように書ける。OSの種類を例にしてみた。

public enum OsType {
    MAC, UNIX, WINDOWS;
                
    public boolean isUnix() {
        return (this == UNIX || this == MAC);
    }
}
    

public static void main(String[] args) {
    String name = OsType.MAC.toString(); // => "MAC"
    OsType type1 = OsType.valueOf("WINDOWS"); // => OsType.WINDOWS
    int intValue = OsType.WINDOWS.ordinal(); // => 2
    OsType type2 = OsType.values()[0]; // => OsType.MAC;
    Enum type3 = Enum.valueOf(OsType.class, "UNIX"); // => OsType.UNIX
    boolean isUnix = type1.isUnix(); // => false
}

オブジェクト指向プログラミングでは「誰にこの仕事をやらせるか?」を割当てるのがポイントになる。整数の定数は仕事をしてくれないから、その値にまつわる仕事を周りがしなくちゃいけなくって、あちこちに条件判定の羅列ができちゃったりする。Javaの列挙型はそれ自身が仕事をしてくれるから、あれやこれやの雑務をキレイに割当てられてスッキリ。