Effective Java 學習筆記
【第一條】 考慮用靜態工廠方法代替構造器
常見的靜態工廠方法名
這裡附上靜態工廠方法的一些約定俗成的名稱:
valueOf/Of——型別轉換,返回的例項和入參具有相同的值,比如Boolean.valueOf()、EnumSet.valueOf()
getInstance——返回一個預先建立好的例項
newInstance——返回一個新的例項
總結
靜態工廠方法具有三大優勢——具名、環保、多子。
如果一個類提供了靜態工廠方法,那麼也就不需要考慮對這個類進行工廠模式了。
我們在建立類時,切忌第一反應就是提供公有構造器,要優先考慮靜態工廠方法。
相關推薦
effective java學習筆記之不可實例化的類
style 類的方法 div pan ava 我們 工具 靜態 class 在沒有顯式聲明一個類的構造方法時,編譯器會生成默認的無參構造方法,在設計工具類時,我們通常將方法設置成靜態方法,以類名.方法名的形式調用,此時這個類就沒有必要創建實例,我們知道抽象類不可以被實例化,
Effective Java 學習筆記
【第一條】 考慮用靜態工廠方法代替構造器 常見的靜態工廠方法名 這裡附上靜態工廠方法的一些約定俗成的名稱: valueOf/Of——型別轉換,返回的例項和入參具有相同的值,比如Boolean.valueOf()、EnumSet.valueOf() getInstance
Effective Java學習筆記(二)對於所有物件都通用的方法
Object是一個具體類,但是設計他主要是為了擴充套件,他所有的非final方法(equals,toString,hashCode,clone,finalize)都是要被覆蓋的,並且任何一個類覆蓋非final方法時都要遵守通用原則,以便其他遵守這些預定的類能夠一同運作,
Effective Java學習筆記一(靜態工廠方法、JavaBeans模式、builder模式)
靜態工廠方法代替構造器 對於類而言,為了讓客戶端獲取它自身的一個例項,最常用的辦法是提供一個公有的構造器。還有一種方法:公有的靜態工廠方法。它只是一個返回類例項的靜態方法,如下程式碼所示: public class Gender { pri
Effective Java 學習筆記 (六)
第八條改寫equals時總是要改寫hashCode 每個改寫了equals方法的類中,你必須也要改寫hashCode方法。 hashCode約定的內容: 1.在一個應用程式執行期間,如果一個物件的equals方法做比較所用到的資訊沒有被修改的話,則對該物件呼叫hashCode
我的Effective Java 學習筆記(一)
學習記錄,也是生活的一種記錄。 第一條:考慮用靜態工廠方法代替構造器 我們都是有身份證的人。 靜態工廠方法與構造器不同的最大優勢就在於它們都是有個人身份id的,雖然構造方法能夠通過改名引數型別或者引數個數等來區分,但一定意義上也會給開發帶來一定的問
Effective Java學習筆記: 第57條只針對異常的情況才使用異常
摘要: 異常應該只用於異常的情況下,它們永遠不應該用於正常的控制流。 設計良好的API不應該強迫它的客戶端為了正常的控制流而使用異常。 如果物件有“狀態相關的方法”。可以使用如下的兩種方式來避免呼叫該方法時,丟擲異常。 狀態測試方法 使用方法來判斷
Effective-Java學習筆記 遇到多個構造器引數時要考慮用構建器
要求建立一個例項,包含多個必選的引數和多個可選引數 方法一 習慣採用重疊構造器模式,即提供多個引數不同的構造方法,然後根據需要選擇相應的構造方法建立例項。但是當有許多引數的時候,程式碼就很難編寫,並難以閱讀 方法二 JavaBeans模式,用一個無參構
effective Java 學習筆記 (一)
第一條:考慮用靜態工廠方法代替建構函式 類可提供一個共有的靜態工廠方法,返回類的一個例項。 靜態工廠方法優點(與建構函式比較): 1、靜態工廠方法具有名字。 當有多個建構函式的時候,如果一個建構函式的引數不能明確的描述被返回物件的特徵,則選用適當名字的靜態方法可以更易閱
Effective Java學習筆記一
一.考慮使用靜態工廠方法代替構造器優點:①靜態方法有合適的名字。 ②不必在每次呼叫他們的時候都建立一個新物件 ③靜態方法可以返回型別的任何子型別物件。 ④建立引數化型別例項的時候,它們使程式碼變得更加簡潔 服務提供者框架中有三個重要的元件:服務介面(提供者實現的),
Effective Java 學習筆記 使用靜態工廠方法代替構造器
什麼是使用靜態工廠方法代替構造器:建立一個靜態方法,返回值是類的例項 使用靜態工廠方法的好處總結: 1.可以隱藏構造方法,把控物件的建立。可以讓物件是單例,複用已經有的物件,比如Boolean public static final Boolean TRUE = new
java學習筆記——String類
通過 ray [] 原理 log spl 2.3 -s 長度 一、概述 ·字符串是一個特殊的對象 ·字符串一旦初始化就不可以被改變 ·String str = "abc"; ·String str1 = new String("abc"); 有什麽區別? package
java學習筆記——java中對象的創建,初始化,引用的解析
初始 學習筆記 style article 學習 base 表達 如果 bsp 如果有一個A類。 1、例如以下表達式: A a1 = new A(); 那麽A是類,a1是引用。new A()是對象。僅僅是a1這個引用指向了new A()這個對象。 2、又如: A
Java學習筆記--鏈表
引用變量 nts mage 集合 tran 分享 isp exce pub 心在山東身在吳,飄蓬江海漫嗟籲。 他時若遂淩雲誌, 敢笑黃巢不丈夫。 ——水滸傳 先上源代碼,LinkedList類: 1 private static class
Java學習筆記——淺談數據結構與Java集合框架(第一篇、List)
技術分享 emp 鏈表 adc 下標 -c nod nal integer 橫看成嶺側成峰,遠近高低各不同。不識廬山真面目,只緣身在此山中。 ——蘇軾 這一塊兒學的是雲裏霧裏,咱們先從簡單的入手。逐漸的撥開迷霧見太陽。本次先做List集合的三
《effective java》筆記
繼承 j2se png 靜態 培養 記錄 私有成員變量 fec 特意 周末看了下這本書。把覺得有用的內容,記錄下來,特意和大家分享下: 1. 不要濫用【繼承】,盡量使用【復用】; 用【私有成員變量(自身類的引用)】2. 接口只用於定義類型;3.優先考慮靜態成員類
JAVA學習筆記(1)——a++與++a的區別
col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3
Java學習筆記——泛型
ray dem 想想 string stub odt 好處 reac test 一、什麽是泛型?為什麽要使用泛型? 且看代碼: 1 public class GenericsDemo { 2 3 public static void main(String
Java學習筆記——排序算法之O(n²)排序
blog sel != 而是 while bsp 優化 ++ logs 男兒何不帶吳鉤,收取關山五十州。請君暫上淩煙閣,若個書生萬戶侯? ——南園十三首 三種排序法: 1、冒泡法 2、簡單選擇法 3、直接插入法
Java學習筆記——排序算法之進階排序(堆排序與分治並歸排序)
進行 技術分享 ring http 沒有 oid 有序 重復 調整 春蠶到死絲方盡,蠟炬成灰淚始幹 ——無題 這裏介紹兩個比較難的算法: 1、堆排序 2、分治並歸排序 先說堆。 這裏請大家先自行了解完全二叉樹的數據結構。 堆是完全二叉樹。