instanceof檢測對象類型


參考:1、http://code.tutsplus.com/tutorials/learn-java-for-android-development-checking-object-type-with-instanceof--mobile-2626

2、http://www.cnblogs.com/rodney/archive/2005/08/18/instanceof.html

 

java中,instanceof 關鍵字可以判斷對象屬於哪一個類的示例,返回boolean值。

使用instanceof作條件判斷

因為使用Instanceof可以返回boolean值,所以可以用在條件判斷式子中。Java是一種完全面向對象的語言,一切都是對象,所以可以用instanceof關鍵字來對對象所屬類進行判斷。一個簡單的例子,有一個Fish父類,它有兩個子類分別為咸水魚SaltwaterFish和淡水魚FreshwaterFish,那么我們可以寫出來下面一段代碼:

SaltwaterFish nemo=new SaltwaterFish();

if(nemo instanceof Fish){

  ////因為SaltwaterFish是Fish的子類,注意這里判斷式結果是:nemo 是 Fish的對象,即首先得到////nemo是魚

  if(nemo instanceof SaltwaterFish){

  ////…….進而判斷是不是咸水魚

}

}

  

instanceof在Android開發中的使用

為什么會用到instanceof這個特性是因為android SDK的類結構是hierarchically.比如 Button, TextView ,CheckBox分別是不同的控件,但是都有一個共同的父類:View。所有這和上面的Fish例子有點像,比如創建一個方法傳入View的參數,但是根據不同的控件類型會有不同的操作,就可以使用instanceof來進行判斷。可以寫出下面的程序:

  void checkforTextView(View v)

  {

    if(v instanceof TextView)

   {

    ///如果是TextView的控件會怎樣怎樣。。

   }else {

    ////如果不是TextView的控件又該怎樣

   }

  }

  

然而,根據上面實現的功能我們很容易想到多態,instanceof的做法顯然沒有好好利用面向對象中的多態性,回到了結構化編程模式。所以,在絕大多數情況下instanceof並不是推薦的做法,應當好好利用多態。


免責聲明!

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



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