Java 之所以不能實現真正泛型的原因有以下幾點:
Java泛型是通過類型擦除來實現的,即在編譯期間將泛型類型擦除為其上界或Object類型。這樣做是為了保持與之前的Java版本的向后兼容性。這意味著在運行時,無法獲取泛型的具體類型信息。
類型擦除導致了泛型類型參數在運行時都被擦除為它們的上界類型或Object類型,因此無法在運行時進行類型檢查,可能會導致類型錯誤。
泛型類型參數不能是基本類型。只能使用其對應的包裝類作為類型參數。這是因為類型擦除會將泛型類型參數擦除為其上界類型,而基本類型沒有對應的包裝類,因此無法作為類型參數。
泛型數組的創建是不允許的。由于類型擦除的緣故,無法在運行時創建具有泛型類型參數的數組。
盡管Java泛型存在一些局限性,但它仍然提供了一定程度的類型安全和代碼重用。通過在編譯期間進行類型檢查,可以避免一些類型錯誤,并提高代碼的可讀性和維護性。