熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

final的注意事項

2013-11-15 09:49:09  來源: JSP教程 

  設計一個類時往往需要考慮是否將一個方法設為final可能會覺得使用自己的類時執行效率非常重要沒有人想覆蓋自己的方法這種想法在某些時候是正確的
  
  但要慎重作出自己的假定通常我們很難預測一個類以後會以什麼樣的形式再生或重復利用常規用途的類尤其如此若將一個方法定義成final就可能杜絕了在其他程序員的項目中對自己的類進行繼承的途徑因為我們根本沒有想到它會象那樣使用
  
  標准Java庫是闡述這一觀點的最好例子其中特別常用的一個類是Vector如果我們考慮代碼的執行效率就會發現只有不把任何方法設為final才能使其發揮更大的作用我們很容易就會想到自己應繼承和覆蓋如此有用的一個類但它的設計者卻否定了我們的想法但我們至少可以用兩個理由來反駁他們首先Stack(堆棧)是從Vector繼承來的亦即Stack一個Vector這種說法是不確切的其次對於Vector許多重要的方法如addElement()以及elementAt()等它們都變成了synchronized(同步的)正如在第章要講到的那樣這會造成顯著的性能開銷可能會把final提供的性能改善抵銷得一干二淨因此程序員不得不猜測到底應該在哪裡進行優化在標准庫裡居然采用了如此笨拙的設計真不敢想象會在程序員裡引發什麼樣的情緒
  
  另一個值得注意的是Hashtable(散列表)它是另一個重要的標准類該類沒有采用任何final方法正如我們在本書其他地方提到的那樣顯然一些類的設計人員與其他設計人員有著全然不同的素質(注意比較Hashtable極短的方法名與Vecor的方法名)對類庫的用戶來說這顯然是不應該如此輕易就能看出的一個產品的設計變得不一致後會加大用戶的工作量這也從另一個側面強調了代碼設計與檢查時需要很強的責任心
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19167.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.