Мне нужно проверить, является ли экземпляр именно заданного типа. Но кажется, что 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), как мне проверить их?