一葉笑天
          雄關漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽如血。
          posts - 73,comments - 7,trackbacks - 0
          有時候需要寫一些只有靜態方法和靜態屬性的類,由于他們不考慮實例化,因此有時候會被濫用。例如java.lang.Math和java.util.Arrays.在他們中使用了很多的靜態方法包括工廠方法。
          很多類被設計成不需要實例化,實例對他們來說是無意義的。他們缺少明確的構造器,但是編譯器會給他們提供一個public的無參數的缺省構造器。對用戶來說,這樣的構造器是他們不能同其他的構造器區別。
          其他使一個類抽象化來增強非實例化屬性是不可行的。因為類能夠被子類型話,子類型可以實例化。而且會使用戶在考慮繼承時被誤導。缺省的構造器是在一個類沒有明確的構造器的時候才會生成的,所以類需要通過增加一個private的構造器來增強非實例性。
          // Noninstantiable utility class
          public class UtilityClass {
          // Suppress default constructor for noninstantiability
          private UtilityClass() {
          throw new AssertionError();
          }

           
          // Remainder omitted
          }
          因為構造器是private的,因此外界不能訪問到。AssertionError不是一定需要的,但是他確保了萬一構造器被內部類調用。它確保了在任何時候這個類都不會被實例化。同時私有的構造函數阻止了子類型話。
          posted on 2008-06-19 10:24 一葉笑天 閱讀(203) 評論(0)  編輯  收藏 所屬分類: JAVA技術
          主站蜘蛛池模板: 武川县| 汉源县| 固原市| 宜黄县| 乌审旗| 沧州市| 凤庆县| 高碑店市| 岚皋县| 兰溪市| 广东省| 周至县| 西乌珠穆沁旗| 会宁县| 鹤岗市| 抚宁县| 任丘市| 伊宁市| 仪陇县| 沾化县| 遂川县| 穆棱市| 合水县| 临湘市| 巴林左旗| 和静县| 赤水市| 赤峰市| 富顺县| 龙游县| 贵阳市| 赤城县| 全州县| 历史| 永嘉县| 黔江区| 文山县| 子洲县| 南投县| 承德县| 布尔津县|