• 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获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑!!!
  • 相关阅读:
    有趣的项目链接分享
    Nano Pi安装Opencv-python
    Opencv
    安装库的步骤
    EC20 AT指令
    最详细树莓派/NanoPi网线和电脑直接连接方法
    在Altium Designer中如何将一组器件合并为一个?
    Altium Designer如何快速查找PCB板上元件
    pip升级之后,不能使用
    利用opencv-python(cv2)查看设备连接摄像头的数量
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/8462812.html
Copyright © 2020-2023  润新知