Enumで遊ぶ

javaenumでいろいろやってみよう。 まず、enumに定数固有の数値を持たせる。

   enum Nums {
        ZERO(0),
        ONE(1),
        TWO(2),
        THREE(3);
        
        int index;
        private Nums(int index) {
            this.index = index;
        }
        String get(List<String> list) {
            return list.get(this.index);
        }
    }

こんな感じで使える。

   public static void main(String[] args) {
        List<String> list = Arrays.asList("A","B","C","D","E");
        System.out.println(Nums.ZERO.get(list));
        System.out.println(Nums.ONE.get(list));
        System.out.println(Nums.TWO.get(list));
        System.out.println(Nums.THREE.get(list));

        }


②定数固有メソッドを使用する。 enumの宣言内でabstractメソッドを定義すると、 定数ごとにメソッドの実装を強制できる。(メソッドを実装しないと コンパイルエラーになるため、将来の定数追加において、実装漏れが防げる。)

   enum Calc {
        PLUS("+") {
            @Override
            double calc(int a, int b) {
                return a + b;
            }
        },
        MINUS("-") {
            @Override
            double calc(int a, int b) {
                return a - b;
            }
        };
        String type;
        Calc(String type) {
            this.type = type;
        }
        
        abstract double calc(int a , int b);
    }