Le code suivant ne compile pas :
class OuterClass {
class BaseClass { }
class SubClass extends BaseClass { }
public void test(BaseClass myObject) {
boolean b = (myObject instanceof SubClass);
}
}
Le message d'erreur sur la méthode test()
est : "Impossible d'exécuter une vérification d'instance sur un type paramétré MyOuterClass.MySubClass. Utilisez la forme MySubClass car les informations supplémentaires sur le type générique seront effacées à l'exécution"
Alors comment puis-je déterminer si la variable est de type BaseClass
? J'ai essayé toutes les options suivantes et elles ne fonctionnent pas :
boolean b1 = (myObject instanceof SubClass);
boolean b2 = (myObject instanceof SubClass);
boolean b3 = (myObject instanceof SubClass);
boolean b4 = (myObject instanceof OuterClass.SubClass);
boolean b5 = (myObject instanceof OuterClass.SubClass);
boolean b6 = (myObject instanceof OuterClass.SubClass);
boolean b7 = (myObject instanceof OuterClass.SubClass);
boolean b8 = (myObject instanceof OuterClass.SubClass);
Je pense que ce problème est indépendant de la version de la JVM, mais juste au cas où, j'utilise la version 1.6.0_22-b04 de Sun.