Check if a object is a instance of a class (but not a instance of its subclass)

前端 未结 7 1521
天命终不由人
天命终不由人 2020-12-03 04:08

For this example:

public class Foo{}

public class Bar extends Foo{}

....

void myMethod(Foo qux){
   if (checkInstance(qux,Foo.class)){
     ....
   }
}
         


        
7条回答
  •  一生所求
    2020-12-03 04:49

    I just tried following code, it seems like working fine

    public class BaseClass {
    
        private String a;
    
        public boolean isInstanceOf(BaseClass base){
            if(base == null){
                return false;
            }
            else if(getClass() == base.getClass()){
                return true;
            }else{
                return false;
            }
        }
    
    }
    
    
    
    public class DervidClass extends BaseClass {
    
    
        public boolean isInstanceOf(DervidClass base) {
            if(base == null){
                return false;
            }
            else if(getClass() == base.getClass()){
                return true;
            }else{
                return false;
            }
        }
    
    
    }
    
    public class myTest {
    public static void main(String[] args) throws ParseException {
    
    
            BaseClass base = new BaseClass();
            BaseClass base1 = new BaseClass();
            DervidClass derived = new DervidClass();
    
            BaseClass d1 = new DervidClass();
    
            System.out.println(base.isInstanceOf(d1));
            System.out.println(d1.isInstanceOf(d1));
            System.out.println((d1 instanceof BaseClass));
    
    
        }
    

提交回复
热议问题