第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

泄漏到構(gòu)造函數(shù)警告中

泄漏到構(gòu)造函數(shù)警告中

慕斯王 2019-10-29 15:02:54
我想避免NetBeans 6.9.1的(大部分)警告,并且該'Leaking this in constructor'警告有問題。我理解問題所在,在構(gòu)造函數(shù)中調(diào)用方法并傳遞“ this”很危險(xiǎn),因?yàn)椤?this”可能尚未完全初始化。在我的單例類中修復(fù)警告很容易,因?yàn)闃?gòu)造函數(shù)是私有的,只能從同一類調(diào)用。舊代碼(簡體):private Singleton() {  ...  addWindowFocusListener(this);}public static Singleton getInstance() {  ...  instance = new Singleton();  ...}新代碼(簡體):private Singleton() {  ...}public static Singleton getInstance() {  ...  instance = new Singleton();  addWindowFocusListener( instance );  ...}如果構(gòu)造函數(shù)是公共的,并且可以從其他類調(diào)用,則此修補(bǔ)程序?qū)o法正常工作。如何修復(fù)以下代碼:public class MyClass {  ...  List<MyClass> instances = new ArrayList<MyClass>();  ...  public MyClass() {    ...    instances.add(this);  }}當(dāng)然,我需要一個(gè)不需要使用此類修改所有代碼的修補(bǔ)程序(例如,通過調(diào)用init方法)。
查看完整描述

3 回答

?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

因?yàn)槟_保將您instances.add(this)放在構(gòu)造函數(shù)的末尾,所以恕我直言,應(yīng)該安全地告訴編譯器僅禁止顯示警告 (*)。警告從本質(zhì)上說,不一定意味著有什么問題,只需要引起您的注意。


如果您知道自己在做什么,則可以使用@SuppressWarnings注釋。就像Terrel在他的評(píng)論中提到的那樣,從NetBeans 6.9.1開始,以下注釋可以做到這一點(diǎn):


@SuppressWarnings("LeakingThisInConstructor")

(*)更新:正如Isthar和Sergey指出的那樣,在某些情況下,“泄漏”構(gòu)造函數(shù)代碼看起來非常安全(如您所提的問題),但事實(shí)并非如此。還有更多的讀者可以批準(zhǔn)嗎?由于上述原因,我正在考慮刪除此答案。


查看完整回答
反對(duì) 回復(fù) 2019-10-29
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

這是創(chuàng)建工廠實(shí)例實(shí)例的工廠會(huì)有所幫助的一個(gè)好例子。如果Factory負(fù)責(zé)創(chuàng)建類的實(shí)例,則將在一個(gè)集中位置調(diào)用構(gòu)造函數(shù),并且將必需的init()方法添加到代碼中將變得很簡單。


關(guān)于您的立即解決方案,我建議您將泄漏的所有調(diào)用移到this構(gòu)造函數(shù)的最后一行,然后在“證明”這樣做是安全的之后,使用注釋將它們隱藏。


在IntelliJ IDEA中,可以在行上方的以下注釋中取消此警告:

//noinspection ThisEscapedInObjectConstruction


查看完整回答
反對(duì) 回復(fù) 2019-10-29
  • 3 回答
  • 0 關(guān)注
  • 513 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)