因為編譯器使用型別擦除,執行時不會跟蹤型別引數,所以在Box <Integer>
和Box <String>
之間的執行時差異無法使用instanceOf
運算子進行驗證。所以類似下面的程式碼用法是錯誤的 ~!
Box<Integer> integerBox = new Box<Integer>();
//Compiler Error:
//Cannot perform instanceof check against
//parameterized type Box<Integer>.
//Use the form Box<?> instead since further
//generic type information will be erased at runtime
if(integerBox instanceof Box<Integer>){ }