Я должен протестировать, если экземпляр точно имеет данный тип. Но кажется, что instanceof возвращает true также, если подтип тестируется на супертип (случай 3). Я никогда не знал это прежде, и я вполне удивлен. Я делаю что-то не так здесь? Как я точно тестирую на данный тип?
//..
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");
}
РЕЗУЛЬТАТ:
1
3
4
Я хочу избежать случая 3, я только хочу "точные совпадения" (случай 1 и 4), как я тестирую на них?
if( emailAttachment.getClass().equals(EmailAttachment.class) )