<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發(fā)出高質(zhì)量的系統(tǒng)

    常用鏈接

    統(tǒng)計

    積分與排名

    好友之家

    最新評論

    Effective Java 1-5

    第一條:
    內(nèi)容:靜態(tài)工廠替代構(gòu)造函數(shù)
    例子:String.valueOf()?? getInstance()等
    靜態(tài)工廠方法優(yōu)點:
    1,可以隨意起名字,更好的描述返回對象
    2,每次調(diào)用的時候不一定要創(chuàng)建一個新對象
    3,可以返回一個原返回類型的子類型對象
    靜態(tài)工廠方法的缺點:
    1,如果類沒有公有或者受保護的構(gòu)造函數(shù)就不能被子類化
    2,不符合規(guī)范,破壞規(guī)范。在API文檔中不會被那么明確的標(biāo)識出來。

    第二條:使用私有構(gòu)造函數(shù)強化單態(tài)
    單態(tài)的模式大家都知道了,但是使用單態(tài)的時候記住要使用私有的構(gòu)造函數(shù)。
    原因很簡單,如果不如此很難保證單態(tài)。只要new一下另一個對象就生成了

    第三條:有些類是不能實例化的,如果你要做到這點,記得使用私有的構(gòu)造函數(shù)。
    例如:java.util.Collections??????? java.lang.Math 等

    第四條:避免創(chuàng)造重復(fù)的對象
    特別是這樣的代碼不要寫: String str = new String("a string");
    因為這樣每次執(zhí)行的時候都創(chuàng)建了一個"a string"對象。
    可以寫成這樣:String str = "a string?";
    另外順便說一句,這個時候你再次定義String? str2 = "a string";會復(fù)用上邊的字符串.

    第五條:在有些情況下手動消除對象的引用
    public?class?Stack{
    ????
    private?Object[]?elements;
    ????
    private?int?size?=?0;
    ????
    public?Stack(int?initialCapacity){
    ????????
    this.elements?=?new?Object[initialCapacity];
    ????}

    ????
    public?void?push(Object?e){
    ????????ensureCapacity();
    ????????elements[size
    ++]?=?e;
    ????}

    ????
    public?Object?pop(){
    ????????
    if?(size?==?0)
    ????????????
    throw?new?EmptyStackException();
    ????????
    return?elements[--size];
    ????}

    ????
    private?void?ensureCapacity(){
    ????????
    if?(elements.length?==?size){
    ????????????Object[]?oldElements?
    =?elements;
    ????????????elements?
    =?new?Object[2*element.length+1];
    ????????System.arraycopy(oldElements,
    0,elements,0,size);
    ????????}

    ????}

    }
    如果這個Stack先大量增長,然后收縮,然后在比較小的范圍內(nèi)使用,必定造成大量的不可回收的對象,造成內(nèi)存泄漏.。
    解決辦法:改造一下pop()方法
    public?Object?pop(){
    ???????
    if(size?=?=?0)
    ???????????
    throw?new?EmptyStackException();
    ??????? Object?result?
    =?elements[--size];
    ?????????????????//加上這一句
    ?????? ?elements.[size]
    =null;
    ????? ??
    return?result;
    }

    posted on 2007-01-28 23:58 dreamstone 閱讀(681) 評論(0)  編輯  收藏 所屬分類: jdk相關(guān)

    主站蜘蛛池模板: 午夜视频在线免费观看| 成年美女黄网站18禁免费| 亚洲嫩草影院在线观看| 在线免费视频一区| rh男男车车的车车免费网站| 亚洲AV无码专区亚洲AV伊甸园| 国产高清不卡免费在线| 黄色毛片视频免费| 亚洲人成在线观看| 国产精品二区三区免费播放心| 免费毛片a线观看| 亚洲日韩国产欧美一区二区三区| 亚洲欧洲精品成人久久曰影片 | 亚洲色大成网站www永久男同| 国产偷国产偷亚洲清高动态图| 国产成人精品免费视频大| 曰批免费视频播放免费| 亚洲国产精品白丝在线观看| 亚洲AⅤ无码一区二区三区在线| 蜜桃成人无码区免费视频网站 | 91精品成人免费国产| 亚洲中文字幕久久精品无码A| 亚洲人成网77777亚洲色| 成年人网站在线免费观看| 美女被cao网站免费看在线看| 亚洲av片在线观看| 亚洲成AV人综合在线观看| 狠狠亚洲婷婷综合色香五月排名| 午夜网站免费版在线观看| 最近中文字幕大全免费视频| a毛片成人免费全部播放| 亚洲国产一区二区三区在线观看| 久久水蜜桃亚洲av无码精品麻豆| 亚洲午夜AV无码专区在线播放| 国产一精品一AV一免费孕妇| 香蕉成人免费看片视频app下载| www成人免费视频| 另类图片亚洲校园小说区| 色老板亚洲视频免在线观| 久热综合在线亚洲精品| 亚洲欧洲日本在线|