初学者难免有点混淆java中instanceof和getClass()的作用, 下面就来一一讲解。
父类A:
class A { }
子类B:
class B extends A { }
构造对象
Object o1 = new A(); Object o2 = new B();
一、instanceof
演示一:
1、o1 instanceof A => true 2、o1 instanceof B => false 3、o2 instanceof A => true // <================ HERE 4、o2 instanceof B => true
分析==>
用法:
英文:result = object instanceof class
中文:结果 = 某个实例对象 instanceof 某个类名
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
总结:
S(Object) instanceof T(Class)
简单来说,instanceof就是判断对象S是否是T类的实例,或者是T类的子类实例。
二、getclass
演示二:
1、o1.getClass().equals(A.class) => true 2、o1.getClass().equals(B.class) => false 3、o2.getClass().equals(A.class) => false // <===============HERE 4、o2.getClass().equals(B.class) => true
分析==>
getClass方法在JDK1.8中定义如下:
/*** Returns the runtime class of this Object*/public final native Class<?> getClass();
功能:
返回在运行时类的对象。
getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.
三、instanceof与getclass的区别
1、作用:
- instanceof: 主要用来判断 对象与类之间的关系。
- getclass: 主要用来判断 类与类之间的关系。
参考:
1、http://www.jb51.net/article/36114.htm
时间: 2024-12-28 15:28:07