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並不是推薦的做法,應當好好利用多態。