Java Instance of: Supertypes and Subtypes seem to be equal? How to test exactly for Type?
Posted
by jens
on Stack Overflow
See other posts from Stack Overflow
or by jens
Published on 2010-03-14T18:58:23Z
Indexed on
2010/03/14
19:15 UTC
Read the original article
Hit count: 187
java
|instanceof
I need to test, if an instance is exactly of a given type. But it seems that instanceof returns true also if the subtype is tested for the supertype (case 3). I never knew this before and I am quite surprised. Am I doing something wrong here? How do I exactly test for a given type?
//..
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");
}
RESULT:
1
3
4
I want to avoid case 3, I only want "exact matches" (case 1 and 4) how do I test for them?
© Stack Overflow or respective owner