国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java中鮮為人知的缺點(中)

2019-11-18 13:28:15
字體:
來源:轉載
供稿:網友

  無法生成通用類
  
    在java中無法生成適用于各種Class(類)的通用類。具有C++編程經驗的人員對此尤其感覺不便。
  [[The No.1 Picture.]]
  圖4●模板的功能。假如是符合條件的類型,無論是Class(類)型還是數值型均可使用模板類(template class)的功能。
  C++利用被稱為模板(參數化類型)的功能實現這一點(圖4)。生成類和函數時,不需使用特定的類,而使用包含類的模板描述處理過程(注1)。就是說只要具有在模板中調用的方法和運算符,無論何種類型的對象都可以使用模板(LIST 4)。
  
  down cast(向下強制類型轉換)難以理解,而且危險
  
    不能使用模板的語言在編程時就會經常受到數據類型的制約。下面以Java為例,對此加以說明。對象保存在(上)篇中提到的Vector類中(LIST 5(點擊放大顯示))。
  
    首先,生成String類的對象,并將其追加到Vector類中。然后提取Vector類中的初始要素。此時明確地利用String類對該方法的返回值進行類型轉換(cast)。假如沒有這種類型轉換,編譯時就會產生錯誤。因為暫時保存在Vector類中的對象只能處理成對象型。
  
    追加這種類型轉換從2個角度來講是不合理的。很清楚在Vector類中的要素中本來就只有"類型"的信息。而編程者則必須一個一個重新進行類型轉換。由于需要進行多余的描述,因此代碼就會無謂地增加。
  
    另一個問題是,這種操作實際上隱藏著一定的危險。在LIST 5中,將由Vector類中取得的對象定為String類型后進行了類型轉換。這種轉換并非永遠都適用。假如在這個Vector類中由外部追加了類型完全不同的(也并非是指繼續了String類)對象,由于類型不一致,因此不僅無法進行類型轉換,還會發生錯誤。
  
    如上所述,down cast(向下強制類型轉換)就是指將位于繼續關系中上層的類(這里指Object類)轉換成其派生的類(這里指String類)。由于down cast伴隨著這種危險,因此在編程時就應該盡量予以避免。但是,在使用像Vector類這樣的Collection類時這種轉換就將無法避免。
  
    Java的這種缺點據稱不久將得到解決。負責修訂Java語言規格的的JCP組織(Java Community PRocess)計劃在Java中導入類似于C++模板的Generics。具體的時間并不明確,但估計在Java 2 SDK 1.5以后導入。
  [[The No.2 Picture.]]
  LIST 4●C++中部分模板代碼。為了將各種類型總稱起來,使用了名為T的變量。假如有需要將其值加倍的類,就在T部分中指定類名來生成模板類。不過這種模板只能由具有運算符的類來使用。假如其他類使用這種模板,就會產生編譯錯誤
  [[The No.3 Picture.]]
  LIST 5●Java中將字符串對象的數據保存到Vector類中的代碼。取值時必須進行類型轉換

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 介休市| 滕州市| 沧州市| 金溪县| 增城市| 华蓥市| 出国| 岑溪市| 同心县| 游戏| 海晏县| 沁水县| 会同县| 阳东县| 龙陵县| 田林县| 青州市| 保德县| 和龙市| 东港市| 宜兰市| 翼城县| 师宗县| 巨野县| 梅河口市| 柳江县| 任丘市| 石狮市| 自贡市| 泽库县| 英吉沙县| 宁都县| 横峰县| 普陀区| 九台市| 静宁县| 凤阳县| 四川省| 阳山县| 比如县| 合作市|