日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

有效的Java –创建和销毁对象

發(fā)布時間:2023/12/3 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有效的Java –创建和销毁对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

創(chuàng)建和銷毀對象(第2章)

這是Joshua Blochs的《 有效的Java》第2章的簡短摘要。我僅包括與自己相關(guān)的項目。

靜態(tài)工廠(項目1)

靜態(tài)工廠與構(gòu)造函數(shù)的一些優(yōu)點:

  • 工廠方法的名稱為構(gòu)造函數(shù)添加了描述
  • 他們可以返回預(yù)先構(gòu)造的對象,而不必總是返回new。
  • 他們可以返回聲明的返回類型的任何子類型,甚至是非公共類。

僅使用靜態(tài)工廠(例如,使用私有構(gòu)造函數(shù))的主要缺點是無法對該類進(jìn)行子類化。

用構(gòu)造器代替具有許多參數(shù)的構(gòu)造器(項目2)

調(diào)用具有許多參數(shù)的構(gòu)造函數(shù)可能很麻煩,因為它需要查看方法聲明以了解參數(shù)代表什么。 這使得讀取和調(diào)用這樣的構(gòu)造函數(shù)都很困難。

一種替代方法是使用無參數(shù)構(gòu)造函數(shù)構(gòu)造一個對象,然后使用設(shè)置器設(shè)置所需的字段(JavaBean模式)。 這種方法的缺點是,在設(shè)置不變式時,對象可能處于不一致狀態(tài)。 此外,由于您提供的是setter,因此對象是不可變的,因此很難保證線程安全。

建筑商是第二種選擇,兩全其美。 生成器首先以可讀和緊湊的方式“收集”參數(shù),然后通過首先驗證不變量是正確的來實例化對象。

由于建造者對于小班制可能會顯得過大,因此本書建議將其用于具有四個以上參數(shù)的班級。 請注意,對于構(gòu)造函數(shù)和靜態(tài)工廠而言,構(gòu)造函數(shù)都是替代方法。

與Singelton的一些陷阱(項目3)

  • 如果singelton未實現(xiàn)接口,則Singeltons使其難以測試其客戶端,因為您無法模擬出singelton。
  • 如果將singeltons設(shè)置為可序列化的 ,則它們不再是singeltons,除非在反序列化時特別注意。
    • 實現(xiàn)單例的最佳方法是使用單元素枚舉類型,這避免了序列化的問題。

避免創(chuàng)建不必要的對象(項目5)

創(chuàng)建對象時應(yīng)小心。 重復(fù)使用昂貴的物品,但不要以防御性復(fù)制為代價(出于不變性–項目39)。 應(yīng)優(yōu)先于盒裝基元使用基元,并且在執(zhí)行自動裝箱以消除不必要的對象創(chuàng)建時要格外小心。

消除過時的對象引用(項目6)

這些書顯示了一個堆棧示例,其中彈出項目不會從內(nèi)部數(shù)組中清空,從而使它們成為無法進(jìn)行垃圾回收的過時引用。 內(nèi)存泄漏和過時引用的公共來源:

  • 每當(dāng)類管理自己的內(nèi)存時 ,程序員都應(yīng)該對內(nèi)存泄漏發(fā)出警報。
  • 忘記緩存條目。 考慮將WeakHashMap用于緩存,該緩存僅在外部引用條目時才保存項目。
  • 缺少注銷的監(jiān)聽器回調(diào) 。 同樣在這里可以使用WeakHashMap 。

翻譯自: https://www.javacodegeeks.com/2017/05/effective-java-creating-destroying-objects.html

總結(jié)

以上是生活随笔為你收集整理的有效的Java –创建和销毁对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。