第13條 使類和成員的可訪問性最小化
第一規則:盡可能地使每個類或成員不被外界訪問
只有當同乙個包內的另乙個類真正需要訪問乙個成員的時候,你才應該刪除private修飾符。
如果方法覆蓋了超類中的乙個方法,子類中的訪問級別就不允許低於超類中的訪問級別。這樣可確保任何可使用超類例項的地方也可以使用子類的例項。
長度非零的陣列總是可變的,所以,類具有公有的靜態final陣列域,或者返回這種域的訪問方法,這幾乎總是錯誤的。修正方法如下:
private static final thing private_values = ;
public static final listvalues() = collections.unmodifiablelist(arrays.aslist(private_values ));
第14條 在公有類中使用訪問方法而非公有域(過)
第15條 使可變性最小化
要使類成為不可變,要遵循下面幾條圓原則:
1,不要提供任何會修改物件狀態的方法
2,保證類不會被擴充套件
3,使所有的域都是final的
4,使所有的域都是私有的
5,確保對於任何可變元件的互斥訪問
第16條 復合優先於繼承
對於兩個類,a和b,只有當兩者之間確實存在「is_a」的關係時,類b才應該擴充套件類a
effective java學習筆記 4
8.3 方法實現的小建議 1.把某個非0常數,比如17.儲存在乙個較results的變數中 2.對於物件的每乙個域做一下操作 計算雜湊碼 c 2.1 boolean c f?0 1 2.2 byte char short int int f 2.3 long 型別 int f f 32 2.4 fl...
Effective Java 讀書筆記 4
23,在新 裡不用使用raw type。用了泛型之後,可以提供編譯時型別檢查,便於及早發現錯誤,從集合裡讀取資料的時候也不用手動的cast。如果真的想向集合裡插入多種型別的資料,可以使用object作為引數型別,比如list這樣的。有點要注意的是class literal不能是泛型,只能有list....
《effective Java》讀後筆記
為什麼區域性變數要宣告為 final 在jdk 1.8 之前,不用final修飾會編譯報錯。在jdk 1.8 中,不用final修飾不會報錯,但是一旦改變了變數的值就會報錯 區域性類如果乙個內部類需要在多個方法之外仍然是可見的,或者是它太長了,不適合於放在方法內部,就應該使用成員類。如果成員類的每個...