Java Instance: et super-types semblent être Sous-types égaux? Comment tester exactement Type?
-
19-09-2019 - |
Question
Je dois tester, si une instance est exactement d'un type donné. Mais il semble que revient instanceof vrai aussi si le sous-type est testé pour le super-type (cas 3). Je ne savais pas cela avant et je suis très surpris. Est-ce que je fais quelque chose de mal ici? Comment puis-je tester exactement pour un type donné?
//..
class DataSourceEmailAttachment extends EmailAttachment
//...
EmailAttachment emailAttachment = new EmailAttachment();
DataSourceEmailAttachment emailAttachmentDS = new DataSourceEmailAttachment();
if (emailAttachment instanceof EmailAttachment){
System.out.println(" 1");
}
if (emailAttachment instanceof DataSourceEmailAttachment){
System.out.println(" 2");
}
if (emailAttachmentDS instanceof EmailAttachment){
System.out.println(" 3 ");
}
if (emailAttachmentDS instanceof DataSourceEmailAttachment){
System.out.println(" 4");
}
RÉSULTAT:
1
3
4
Je veux éviter le cas 3 , je veux seulement "correspondances exactes" (cas 1 et 4) comment puis-je tester pour eux?
La solution
if( emailAttachment.getClass().equals(EmailAttachment.class) )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow