隨筆 - 63  文章 - 0  trackbacks - 0
          <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Java中的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在絕大多數情況下并不是推薦的做法,應當好好利用多態。
          posted on 2009-05-07 13:14 lanxin1020 閱讀(188) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 新沂市| 阿合奇县| 澄迈县| 西和县| 绿春县| 丰都县| 梅河口市| 五原县| 宜阳县| 门头沟区| 敦化市| 道孚县| 临沧市| 兴义市| 青龙| 商洛市| 札达县| 南溪县| 石城县| 呼玛县| 偏关县| 玛曲县| 临清市| 宜春市| 高阳县| 渭源县| 黎平县| 阿鲁科尔沁旗| 奎屯市| 平舆县| 锦州市| 陆川县| 东山县| 沾益县| 嘉荫县| 广丰县| 电白县| 和政县| 环江| 天津市| 黑河市|