八大包裝類(Integer、Double 等)雖各自提供 intValue()、doubleValue() 等轉換方法,但 Number 抽象類的核心價值在於提供統一的父類型引用。
// 無 Number 時:需重載多個方法
void process(Integer i) { ... }
void process(Double d) { ... }
void process(Long l) { ... }
// 有 Number:單一方法處理所有數值
void process(Number n) {
double val = n.doubleValue(); // 統一轉 double 計算
// ...
}
process(10); // 自動裝箱 Integer
process(3.14); // 自動裝箱 Double
process(100L); // 自動裝箱 Long
Number 定義抽象轉換協議,具體子類實現List<Number> 可混合存放整數、浮點數Object 過於通用,無數值語義;Number 縮小契約範圍,提供 byteValue()~doubleValue() 六大標準轉換協議,是「數值」概念在類型系統中的最小公約數。