enumの利用

enumを本格的に使ってみた!


なかなか便利ですねぇ・・・
abstract classみたいな感じで実装できる?


定数に内部でコンストラクタを用意できるので、初期化処理もできるし。


ここでちょっとそのときのポイントをメモ
・初期化処理で利用する変数はprivate finalで定義。
・内部定数(配列含む)はprivate (static) finalで定義。
・公開するメソッドをpublicで実装。
・内部で使う関数はprivate (static)で実装。


たとえば以下のように

public enum TestEnum {
    Test1(1), Test2(2), Test3(3);
    
    private final int index_;
    
    TestEnum(int index) {
        index_ = index;
    }
    
    public int getIndex() {
        return index_;
    }
    
    public boolean isTest1() {
        return compare(Test1.index_);
    }
    
    public boolean isTest2() {
        return compare(Test2.index_);
    }
    
    private boolean compare(int index) {
        return index_ == index;
    }
}

使う側はこんなの

public class Test {
    public static void main(String[] args) {
        TestEnum te = TestEnum.Test1;
        System.out.println(te.getIndex());
        System.out.println(te.isTest1());
        System.out.println(te.isTest2());
        
        TestEnum te2 = TestEnum.Test2;
        System.out.println(te2.getIndex());
        System.out.println(te2.isTest1());
        System.out.println(te2.isTest2());
    }
}

で結果は

1
true
false
2
false
true


こんな感じかな。。。
すごく意味ない上に見にくいソースなのはご愛嬌ってことで^^;