Effective Java(第3版)第6章總結(jié)

第34條:用 enum 代替 int 常量

用枚舉的情況一般都是某個(gè)類(lèi)別的常量。比如星期、月份、顏色等等。

第35條:用實(shí)例域代替序數(shù)索引

枚舉雖然自帶 ordinal 方法,并且從0開(kāi)始,但是應(yīng)避免使用這個(gè)方法。當(dāng)需要類(lèi)似參數(shù),定義一個(gè)參數(shù)即可。

第36條:用 EnumSet 代替位域

用 OR 位運(yùn)算將幾個(gè)常量合并到一個(gè)集合中,稱(chēng)作位域(bit field)。比如:常量 | 常量 | 常量...,也就是并集

  • 規(guī)律性的常量本身可以用枚舉來(lái)列舉
  • EnumSet 內(nèi)部具體實(shí)現(xiàn)上,每個(gè)元素都表示為位矢量。Set 集合的一些操作 add、remove 等,都是利用位運(yùn)算來(lái)實(shí)現(xiàn)的
  • 所以建議用 EnumSet 代替位域,以避免手寫(xiě)產(chǎn)生的BUG

第37條:用 EnumMap 代替序數(shù)索引

避免把枚舉 ordinal 值當(dāng)數(shù)組角標(biāo)。當(dāng)注意到第35條,也就不會(huì)發(fā)生本條的情況了。

第38條:用接口模擬可擴(kuò)展的枚舉

當(dāng)枚舉可能被擴(kuò)展時(shí),請(qǐng)定義一個(gè)接口,就可以有多個(gè)實(shí)現(xiàn)類(lèi)。

第39條:注解優(yōu)先于命名模式

避免使用前綴匹配方式,優(yōu)先使用注解。

第40條:堅(jiān)持使用 Override 注解

IDE一般都會(huì)提示,有時(shí)候會(huì)避免一些方法覆蓋錯(cuò)誤。

第41條:用標(biāo)記接口定義類(lèi)型

標(biāo)記接口是不包含方法聲明的接口,實(shí)現(xiàn)這類(lèi)接口,說(shuō)明類(lèi)擁有接口標(biāo)記的功能。比如序列化接口:Serializable

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容