| 導購 | 订阅 | 在线投稿
分享
 
 
 

Java中的instanceof關鍵字

來源:互聯網  2008-11-06 07:15:57  評論

instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由于它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:

String s = "I AM an Object!";

boolean isObject = s instanceof Object;

我們聲明了一個String對象引用,指向一個String對象,然後用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值爲True。

instanceof有一些用處。比如我們寫了一個處理賬單的系統,其中有這樣三個類:

public class Bill {//省略細節}

public class PhoneBill extends Bill {//省略細節}

public class GasBill extends Bill {//省略細節}

在處理程序裏有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷:

public double calculate(Bill bill) {

if (bill instanceof PhoneBill) {

//計算電話賬單

}

if (bill instanceof GasBill) {

//計算燃氣賬單

}

...

}

這樣就可以用一個方法處理兩種子類。

然而,這種做法通常被認爲是沒有好好利用面向對象中的多態性。其實上面的功能要求用方法重載完全可以實現,這是面向對象變成應有的做法,避免回到結構化編程模式。只要提供兩個名字和返回值都相同,接受參數類型不同的方法就可以了:

public double calculate(PhoneBill bill) {

//計算電話賬單

}

public double calculate(GasBill bill) {

//計算燃氣賬單

}

所以,使用instanceof在絕大多數情況下並不是推薦的做法,應當好好利用多態。

instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由于它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子: String s = "I AM an Object!"; boolean isObject = s instanceof Object; 我們聲明了一個String對象引用,指向一個String對象,然後用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值爲True。 instanceof有一些用處。比如我們寫了一個處理賬單的系統,其中有這樣三個類: public class Bill {//省略細節} public class PhoneBill extends Bill {//省略細節} public class GasBill extends Bill {//省略細節} 在處理程序裏有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷: public double calculate(Bill bill) { if (bill instanceof PhoneBill) { //計算電話賬單 } if (bill instanceof GasBill) { //計算燃氣賬單 } ... } 這樣就可以用一個方法處理兩種子類。 然而,這種做法通常被認爲是沒有好好利用面向對象中的多態性。其實上面的功能要求用方法重載完全可以實現,這是面向對象變成應有的做法,避免回到結構化編程模式。只要提供兩個名字和返回值都相同,接受參數類型不同的方法就可以了: public double calculate(PhoneBill bill) { //計算電話賬單 } public double calculate(GasBill bill) { //計算燃氣賬單 } 所以,使用instanceof在絕大多數情況下並不是推薦的做法,應當好好利用多態。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有