Java Instance: et super-types semblent être Sous-types égaux? Comment tester exactement Type?

StackOverflow https://stackoverflow.com/questions/2443326

  •  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?

Était-ce utile?

La solution

if( emailAttachment.getClass().equals(EmailAttachment.class) )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top