Java泛型没有instanceOf


由于编译器使用类型擦除,因此运行时不会跟踪类型参数,因此在运行时间中,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>) { }