1. 程式人生 > 其它 >Java基礎:泛型小結

Java基礎:泛型小結

目錄

1 型別擦除

於Java的設計是受C++所啟發,所以泛型的實現也是參考了C++。但是,Java泛型是通過型別擦除實現的。
泛型型別引數會被擦除為其第⼀個邊界(多重邊界也是可以的),編譯器實際上會將型別引數替換為其被擦除後的型別(這也說明了型別擦除是在編譯時進行的(而不是執行時))。

型別擦除的原因:
C++是不需要“型別擦除”的,“型別擦除”也不是Java的語言特性,即不是一個優勢,相反,它給程式設計帶來了麻煩,它降低了泛型的“泛化性”。那麼為什麼還要有“型別擦除”呢?
是為了 遷移的相容性充當從⾮泛型程式碼過渡到泛型化程式碼的中間過程
因為泛型並不是Java與⽣俱來的特性,而是後面新增進來的,但是新增進來時,已經有很多的java元件、java庫了,都沒有使用泛型,所以為了相容舊程式碼,目前最好的辦法就是使用“型別擦除”。即使舊元件舊庫都要升級成有泛型的版本,但是大家不可能約定好了同一時間升級,總有先有後,所以還是要考慮相容性。