整理Effective Java書中Item 37: Use EnumMap instead of ordinal indexing心得筆記

主旨

在 Java 中,我們有時會用 int 索引的陣列來儲存與 enum 相關的資料,但這種做法容易造成型別不安全和可讀性問題。Java 提供了 EnumMap 類別,專門用來處理 enum 類型的映射關係,提供更安全、更清楚的解決方案。

問題:int 索引陣列的缺點

假設我們要儲存每個星期幾的開門時間,傳統作法可能會這樣寫:

public class StoreHours {
    private static final int[] OPENING_HOURS = {
        9,  // Monday
        9,  // Tuesday
        9,  // Wednesday
        9,  // Thursday
        9,  // Friday
        10, // Saturday
        10  // Sunday
    };

    public int getOpeningHour(Day day) {
        return OPENING_HOURS[day.ordinal()];
    }
}