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

首頁 > 學院 > 開發(fā)設計 > 正文

final的注意事項

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

  設計一個類時,往往需要考慮是否將一個方法設為final。可能會覺得使用自己的類時執(zhí)行效率非常重要,沒有人想覆蓋自己的方法。這種想法在某些時候是正確的。
  
  但要慎重作出自己的假定。通常,我們很難猜測一個類以后會以什么樣的形式再生或重復利用。常規(guī)用途的類尤其如此。若將一個方法定義成final,就可能杜絕了在其他程序員的項目中對自己的類進行繼續(xù)的途徑,因為我們根本沒有想到它會象那樣使用。
  
  標準java庫是闡述這一觀點的最好例子。其中非凡常用的一個類是Vector。假如我們考慮代碼的執(zhí)行效率,就會發(fā)現只有不把任何方法設為final,才能使其發(fā)揮更大的作用。我們很輕易就會想到自己應繼續(xù)和覆蓋如此有用的一個類,但它的設計者卻否定了我們的想法。但我們至少可以用兩個理由來反駁他們。首先,Stack(堆棧)是從Vector繼續(xù)來的,亦即Stack“是”一個Vector,這種說法是不確切的。其次,對于Vector許多重要的方法,如addElement()以及elementAt()等,它們都變成了synchronized(同步的)。正如在第14章要講到的那樣,這會造成顯著的性能開銷,可能會把final提供的性能改善抵銷得一干二凈。因此,程序員不得不猜測到底應該在哪里進行優(yōu)化。在標準庫里居然采用了如此笨拙的設計,真不敢想象會在程序員里引發(fā)什么樣的情緒。
  
  另一個值得注重的是Hashtable(散列表),它是另一個重要的標準類。該類沒有采用任何final方法。正如我們在本書其他地方提到的那樣,顯然一些類的設計人員與其他設計人員有著全然不同的素質(注重比較Hashtable極短的方法名與Vecor的方法名)。對類庫的用戶來說,這顯然是不應該如此輕易就能看出的。一個產品的設計變得不一致后,會加大用戶的工作量。這也從另一個側面強調了代碼設計與檢查時需要很強的責任心。

上一篇:為什么要上溯造型

下一篇:final方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 靖江市| 孝感市| 绥阳县| 西充县| 芦山县| 莱阳市| 鄂州市| 佛山市| 淅川县| 徐闻县| 荣昌县| 商丘市| 广南县| 开江县| 松江区| 四子王旗| 石河子市| 临湘市| 凤冈县| 延长县| 长沙市| 韩城市| 浦江县| 航空| 琼中| 石屏县| 五常市| 黔东| 仪陇县| 兰溪市| 鄂尔多斯市| 于都县| 虎林市| 额敏县| 兴国县| 新乡县| 友谊县| 崇左市| 连城县| 广宗县| 新宾|