在Java中,泛型的引入是為了在編譯時提供強類型檢查和支持泛型編程。為了實現泛型,Java編譯器應用類型擦除實現:
1、 用類型參數(type parameters)的限定(如果沒有就用Object)替換泛型類型中的所有類型參數。
2、 需要保持類型安全的時候插入類型轉換(隱含插入)
3、 在extened 泛型類型中生成橋方法來保證多態性
類型擦除確保不會為已參數化了的類型(paramterized types)產生新類,這樣泛型能保證沒有運行時的負載。
泛型類型擦除
在類型擦除過程中,java編譯器擦除所有類型參數,用它的限定或者Object(沒限定時)替換。
考慮下面的泛型類:
public class Node{ private T data; private Node next; public Node(T data, Node next) } this.data = data; this.next = next; } public T getData() { return data; } // ... }