java中instanceof和getClass()的作用


初學者難免有點混淆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: 獲取運行時期對象的類。
2、運用:
      假設目前有父親、孩子兩個角色 
場景一:
    參加父親朋友公司開業活動
      此時,父親本人可以親自參加;
      如果父親當天正在外地出差,此時他的孩子可以替其參加。
當父類與子類都可以通過時,則使用instanceof
 
場景二:
    父親帶孩子去游樂場玩,游樂場規定,一些小型游戲場地,只允許孩子進入,父親只能在門外觀看。
當限定到具體某一類時,則使用getclass+equals搭配
 
參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM