原创 Effective Java 學習筆記(9)

通常,有一類問題的產生都是由於沒有重載hashCode這個方法. 當你重載equals後,hashCode必須重載,否則在使用HashMap, HashSet, Hashtable的時候,會出錯. 對於hashCode有幾個原則. 1.

原创 Effective Java 學習筆記(17)

如果要使一個類可繼承,則好的設計和文檔必不可少。 首先,必須在文檔中說明可以重載的方法,對每一個公共的,或保護的類或構造器,文檔必須說明調用的順序及重載的順序, 按照慣例,在每個函數的後面都有一段聲明,聲明這個函數的實現細節,依賴等等。

原创 Effective Java 學習筆記(23)

不要在新代碼中使用原生態類型,而應該使用泛型。 泛型的優點: 1. 編譯時就會進行類型檢查。 當向一個容器中裝入對象時,編譯器會檢查,插入的實例是不是前面聲明的類型。而不用等到運行時纔會發現,而拋出ClassCastException.

原创 Effective Java 學習筆記(21)

使用函數對象表示策略。 實際上就是以Java的方式來實現函數指針。   用Java的方式實現,首先可以定義一個泛型接口,   // Strategy interfacepublic interface Comparator<T> {pub

原创 Effective Java 學習筆記(25)

優先使用列表,而不是數組。   數組與泛型相比,有兩個重要的不同點。1.數組的類型可以向上轉型,即如果sub爲super的子類型,那麼數組類型的sub[]就是super[]的子類型,相反,泛型則是不可變的。 2.數組是會在運行時才知道並檢

原创 Effective Java 學習筆記(13)

影響模塊設計好與壞的一個重要因素就是這個模塊是否隱藏它的內部數據和其他一些實現細節。 信息隱藏的好處:方便獨立開發,測試,優化,使用,理解和修改。能夠提高系統開發速(因爲各模塊可以並行開發),也能易於維護和調試,也能減少系統構建的風險。

原创 巧用javascript獲得下載地址

突然間想去下首fire in the hole的鈴聲,於是用soso找了一下,進入了手機樂園 (http://download.shouji.com.cn/do/wave?html=&inputname=wave&wname=Fire+i

原创 Effective Java 學習筆記 (11)

Clone這個方法很雞肋,原因是因爲它是受保護的(protected),其二Clone這個方法是可選的,即有可能類沒有提供這個方法。 clone沒有調用構造函數,而且如果父類沒有實現clone的話,子類永遠也不可能正確實現clone. 總

原创 Effective Java 學習筆記(19)

常量不應該定義在接口中,或者說不應該有純常量的接口。   常量一般有以下幾種方法: 1. 如果常量與某個類或接口相關,應該把常量加到這個類或接口中。 2.如果常量能被看成枚舉類型,就定義爲枚舉。 3.否則請用不可實例化的工具類來導出這些常

原创 Effective Java 學習筆記(18)

接口要比抽象類要好。原因有三點:1.已經存在的類,不管有不有父類,都可以實現新的接口,而抽象類無法作到這一點,因爲JAVA中不支持多重繼承.2.有時候,接口不用嚴格按照類層次結構來實現,即接口允許我們實現非層次結構的類型框架。3.接口是定

原创 Effective Java 學習筆記(16)

繼承是比較有效的代碼複用的手段,但實際上它並不是最好的,不合當的使用會導致軟件錯誤。當然如果子類與父類在同一個包中,並且它們都是由同一個程序員寫的.   與方法調用不同,繼承會破壞封裝。   例1:   public class Inst

原创 Effective Java 學習筆記 (10)

java.lang.Object 提供了一個toString()的方法,但實際上這個方法返回的往往不是我們需要的,它返回的是類名加上“@”加上十六進制的hash值。這顯然不是我們想要的,所以必須重載toString函數。 很簡單的例子,如

原创 Effective Java 學習筆記 (12)

與其它類不同,compareTo方法並不是Ojbect中的方法,它是Comparable接口中唯一的方法。通過實現Comparable接口,可以它能夠自然排序。 排序,Arrays.sort(a); 就OK了。 書上提了一個巧妙的方法,用

原创 Effective Java 學習筆記(15)

一個不可改變(immutable)的類,顧名思義,就是其實例不能改變,即裏面所有的信息在創建時就賦值,在其生命週期中其值不變。 使用不可改變的類的優點在於,設計簡單,易於實現和使用,具體來講,它的狀態機很簡單,只有一個狀態。它是線程安全,

原创 Effective Java 學習筆記(14)

在公共類,使用getter & setter,而不是直接訪問字段。 當然,如果是不可改變的字段,那麼其不利因素要小一些,對於私有類或是包可訪問的類,在有些條件是可允許直接訪問。