做那種網(wǎng)站受歡迎網(wǎng)絡(luò)公司網(wǎng)頁設(shè)計
類型擦除是Java類型信息在運行時的一個特性,它發(fā)生在泛型類型被擦除成它們的原始類型后,以及在運行時,由于類型擦除,泛型信息不可用。
例如,以下兩個泛型類型:
List<String> list1 = new ArrayList<String>();
List<Integer> list2 = new ArrayList<Integer>();
在運行時,它們都會被擦除成原始類型?List
,這意味著它們在運行時沒有了泛型類型參數(shù)的信息。
類型擦除也意味著以下方法簽名在運行時是相同的:
public void method(List<String> list) { /* ... */ }
public void method(List<Integer> list) { /* ... */ }
這兩個方法在運行時都被視為接受一個?List
?類型參數(shù)的方法。
解決方案通常涉及到類型擦除時的問題,比如在運行時確定泛型的實際類型,或者在編譯時保留泛型信息。這可以通過類型擦除的補(bǔ)償措施來實現(xiàn),例如簽名的多態(tài)(通過不同的方法或構(gòu)造函數(shù)來區(qū)分參數(shù)類型),類型令牌(Type Tokens),或者在運行時使用反射來獲取泛型信息。