下文笔者讲述java中instanceof和getClass的区别,如下所示:
instanceof
:
Java 的保留关键字,它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean
的数据类型
getClass():
返回此 Object 的运行时类
下文笔者将讲述两者的功能及区别
instanceof和getClass都可用于比较两个对象是否属于同一个类的实例
但是
instanceof检测一个类的父类和子类(检测类和派生类),都会返回true
但是getClass是返回具体的字符串,只做严格的类判断
代码示例分享:
public class Test
{
/*
*java265.com 示例分享
*/
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
*/