zoukankan      html  css  js  c++  java
  • Java中instanceof与getClass的区别

    在比较一个类和另一个类是否属于同一个类实例的时候,通常可以采用instanceof和getClass两种方法比较两者是否相等来判断,但是两者在判断上面是有差别的,下面通过代码说明:

    public class Test
    {
    	public static void testInstanceof(Object x)
    	{
    		System.out.println("x instanceof Parent:  "+(x instanceof Parent));
    		System.out.println("x instanceof Child:  "+(x instanceof Child));
    		System.out.println("x getClass Parent:  "+(x.getClass() == Parent.class));
    		System.out.println("x getClass Child:  "+(x.getClass() == Child.class));
    	}
    	public static void main(String[] args) {
    		testInstanceof(new Parent());
    		System.out.println("---------------------------");
    		testInstanceof(new Child());
    	}
    }
    class Parent {
    }
    class Child extends Parent {
    }
    /*
    输出:
    x instanceof Parent:  true
    x instanceof Child:  false
    x getClass Parent:  true
    x getClass Child:  false
    ---------------------------
    x instanceof Parent:  true
    x instanceof Child:  true
    x getClass Parent:  false
    x getClass Child:  true
    */
    从程序输出可以看出,instanceof进行类型检查规则是:是否属于该类或者属于该类的派生类;而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑!!!
  • 相关阅读:
    Codeforces 1149 B
    Tenka1 Programmer Contest 2019 D
    BZOJ 1001 [BeiJing2006]狼抓兔子
    Codeforces 741 D
    HDU 5306 Gorgeous Sequence
    HDU 6521 Party
    Codeforces 912A/B
    Educational Codeforces Round 35 B/C/D
    Codeforces 902D/901B
    Codeforces 902B
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/8462812.html
Copyright © 2011-2022 走看看