java中instanceof和getClass()的做用

初学者不免有点混淆java中instanceof和getClass()的做用,  下面就来一一讲解。java

   父类A:app

class A { }
     子类B:
class B extends A { }  
     构造对象
Object o1 = new A(); 
Object o2 = new B();

1、instanceof


    演示一:
一、o1 instanceof A => true  
二、o1 instanceof B => false 
三、o2 instanceof A => true // <================ HERE 
四、o2 instanceof B => true

分析==>this

用法:
        英文:result = object instanceof classspa

        中文:结果 = 某个实例对象  instanceof   某个类名.net

java 中的instanceof 运算符是用来在运行时指出对象是不是特定类的一个实例。instanceof经过返回一个布尔值来指出,这个对象是不是这个特定类或者是它的子类的一个实例。code

总结:
                   S(Object) instanceof T(Class)
    简单来讲,instanceof就是判断对象S是不是T类的实例,或者是T类的子类实例。

2、getclass


    演示二:
一、o1.getClass().equals(A.class) => true 
二、o1.getClass().equals(B.class) => false
三、o2.getClass().equals(A.class) => false // <===============HERE
四、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.
 

3、instanceof与getclass的运用

一、区别:
  • instanceof: 主要用来判断  对象与类之间的关系。
  • getclass: 获取运行时期对象的类。
二、运用:
      假设目前有父亲、孩子两个角色 
场景一:
    参加父亲朋友公司开业活动
      此时,父亲本人能够亲自参加;
      若是父亲当天正在外地出差,此时他的孩子能够替其参加。
当父类与子类均可以经过时,则使用instanceof
 
场景二:
    父亲带孩子去游乐场玩,游乐场规定,一些小型游戏场地,只容许孩子进入,父亲只能在门外观看。
当限定到具体某一类时,则使用getclass+equals搭配
 
参考:
相关文章
相关标签/搜索