一葉笑天
          雄關漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽如血。
          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 一葉笑天 閱讀(204) 評論(0)  編輯  收藏 所屬分類: JAVA技術
          主站蜘蛛池模板: 孟州市| 晋中市| 电白县| 玉龙| 堆龙德庆县| 彰武县| 乡城县| 长阳| 双鸭山市| 永川市| 延安市| 通道| 城市| 花莲市| 陵水| 达州市| 屯昌县| 平江县| 嘉善县| 太原市| 定襄县| 额敏县| 陆川县| 白城市| 霍州市| 水富县| 荔浦县| 会昌县| 景泰县| 沅江市| 碌曲县| 紫金县| 桃园县| 延吉市| 海南省| 苏尼特左旗| 安岳县| 康定县| 榕江县| 南涧| 赤城县|