Génériques Java - Aucune instanceOf

Étant donné que le compilateur utilise l'effacement de type, le runtime ne garde pas trace des paramètres de type, donc à l'exécution, la différence entre Box <Integer> et Box <String> ne peut pas être vérifiée à l'aide de l'opérateur 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>) { }