在 Java 開發中,有時候我們需要一個集合同時存放 double 和 int 類型的數據,但又不想直接使用 ArrayList(或原始 List)。這樣做的初衷通常是為了類型安全或業務邏輯需求。
假設存在這樣一個列表,當我們獲取其中的元素時,例如 item = list[1];,變數 item 應該聲明為什麼類型?是 double 還是 int?編譯器無法自動推斷,開發者也無法在運行前確定某個索引位置存放的是哪種類型。
若強行使用原始類型列表(如 List 或 ArrayList 不指定泛型),取出的元素只能是 Object 類型,隨後仍需進行強制類型轉換和 instanceof 判斷。這不僅失去了泛型帶來的編譯期類型檢查優勢,反而增加了運行時出錯的風險,本質上又回到了 ArrayList 的原始用法。
Integer 和 Double 的包裝類實現該介面(或直接使用 Number 類),列表聲明為 List<Number>。DataWrapper)包含類型標識和值對象,列表存儲該包裝類實例。List<Integer>、List<Double>),根據業務邏輯選擇操作哪個列表。總結:Java 的強類型特性決定了集合元素類型必須在編譯期確定。通過合理的面向對象設計(泛型、繼承、封裝)可以優雅地解決多類型存儲需求,避免退化為無類型安全的原始集合操作。