100DaysOfJava - [Day 3] 列挙型(Enum)

2024/04/23に公開

列挙型の特徴

  1. finalクラスとしての列挙型

    列挙型で定義されたクラスは、自動的にfinalクラスとして扱われます。つまり、他のクラスから継承されることを防ぎます。

  2. 抽象メソッドの利用

    列挙型は、抽象メソッドを含むことが可能です。これにより、列挙型のインスタンスごとに異なる動作を実現することができます。

列挙型の定義

列挙型は、enumキーワードを使用して定義されます。以下は、列挙型の基本的な定義例です。

public enum DayOfWeek {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY;
}

列挙型の使用例

public class EnumExample {
    public static void main(String[] args) {
        DayOfWeek today = DayOfWeek.MONDAY;

        switch (today) {
            case MONDAY:
                System.out.println("Today is Monday");
                break;
            case TUESDAY:
                System.out.println("Today is Tuesday");
                break;
            // 他の曜日の処理を記述
            default:
                System.out.println("Invalid day");
                break;
        }
    }
}

抽象メソッドの利用例

public enum Operation {
    ADD {
        @Override
        public int apply(int x, int y) {
            return x + y;
        }
    },
    SUBTRACT {
        @Override
        public int apply(int x, int y) {
            return x - y;
        }
    },
    MULTIPLY {
        @Override
        public int apply(int x, int y) {
            return x * y;
        }
    },
    DIVIDE {
        @Override
        public int apply(int x, int y) {
            if (y != 0) {
                return x / y;
            } else {
                throw new IllegalArgumentException("Division by zero");
            }
        }
    };

    public abstract int apply(int x, int y);
}

列挙型の利点

  • 定数の集合を簡潔に表現できる。
  • 列挙型の要素は、他のクラスやメソッドで利用される際に型安全性を提供する。

結論

列挙型は、定数の集合を効果的に表現し、型安全性を向上させるための強力なツールです。finalクラスとして扱われるため、安全性が確保され、抽象メソッドの利用も可能です。

GitHubで編集を提案

Discussion