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获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑!!!
  • 相关阅读:
    第四章作业
    第二章上机实验报告
    对二分法的理解和结对编程情况
    Mysql与sql server的列的合并
    C#中如何去除窗体默认的关闭按钮
    C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件
    running total sql 2012+
    Poqwe Pivot error
    事务
    ssis 导EXCEL ERROR
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/8462812.html
Copyright © 2011-2022 走看看