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

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

如何用類(lèi)之間的相互依賴關(guān)系替換 Java 11 項(xiàng)目中已棄用的 Finalize() 方法

如何用類(lèi)之間的相互依賴關(guān)系替換 Java 11 項(xiàng)目中已棄用的 Finalize() 方法

不負(fù)相思意 2023-08-04 17:39:38
我有一個(gè)涉及多個(gè)類(lèi)的 Java 11 項(xiàng)目。在當(dāng)前場(chǎng)景中,我的 2 個(gè)類(lèi)(A 和 B)實(shí)現(xiàn)了 java Finalize() 方法,該方法現(xiàn)已永久棄用。我知道該方法可能不會(huì)在不久的將來(lái)被刪除,但我認(rèn)為最好立即找到 Finalize 的替代方法。A類(lèi)中的finalize()主要關(guān)注于銷(xiāo)毀一個(gè)受保護(hù)的成員變量long類(lèi)型的對(duì)象,并將某些消息打印到日志中。B 類(lèi)中的 Finalize() 只是將某些消息打印到日志中。類(lèi) A 的實(shí)例是從其他幾個(gè)類(lèi)創(chuàng)建的,類(lèi) B 擴(kuò)展了另一個(gè)類(lèi) ClassLoader。(下面包含代碼片段。)我經(jīng)歷了很多建議,例如,可通過(guò) try-with-resources 自動(dòng)關(guān)閉可清理的界面嘗試-捕獲-最終這些一開(kāi)始就沒(méi)有得到很好的解釋?zhuān)词菇忉尩煤芎?,這些示例也特定于單類(lèi)項(xiàng)目,并且主方法存在于同一類(lèi)中。我無(wú)法繼續(xù)使用我在網(wǎng)上找到的最小解決方案。經(jīng)過(guò)我的研究,帶有 try-with-resources 的 Autocloseable 似乎是我的最佳選擇。我知道我的類(lèi) A 和 B 應(yīng)該實(shí)現(xiàn) Autocloseable,而被調(diào)用者(這里有點(diǎn)不確定)應(yīng)該使用 try-with-resources。我將不勝感激任何有助于簡(jiǎn)化這個(gè)問(wèn)題的幫助,即使它是為了填補(bǔ)我對(duì)這個(gè)場(chǎng)景的理解中可能存在的空白。A.javaclass A{? ? protected long a_var;? ? protected A(String stmt, boolean isd)? ? {? ? ? ? // a_var is initialized here? ? }? ? public void finalize()? ? {? ? ? ? if(a_var != 0)? ? ? ? {? ? ? ? ? ? log("CALL destroy !");? ? ? ? ? ? destroy(a_var);? ? ? ? ? ? log("DONE destroy !");? ? ? ? }? ? }}B.javapublic class B extends extends ClassLoader{? ? protected void finalize ()? ? {? ? ? ? log("No action");? ? }}
查看完整描述

1 回答

?
米琪卡哇伊

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

因此,帶有 try-with-resources 的 AutoCloseable 接口似乎是迄今為止最好的選擇。根據(jù)我的說(shuō)法,finalize 的這種替代方案是最容易實(shí)現(xiàn)的 - 但這當(dāng)然可能會(huì)根據(jù)每個(gè)項(xiàng)目的復(fù)雜性而有所不同。


類(lèi) A 必須實(shí)現(xiàn) AutoCloseable class A implements AutoCloseable,并且創(chuàng)建其對(duì)象的所有位置都應(yīng)包含在 try 中,例如 try (A obj = new A())


現(xiàn)在更進(jìn)一步,重寫(xiě) AutoCloseable 提供的 close 方法,并從內(nèi)部調(diào)用 destroy() 。


class A implements AutoCloseable

{

    @Override

    public void close()

    {

        //log messages

        destroy();

    }

}


class X

{

    // suppose creating object of A within some method

    // enclose in try

    try ( A obj = new A ())

    {

        //use obj

    }

    // at the end of scope, the close() method of A will be called.

}


查看完整回答
反對(duì) 回復(fù) 2023-08-04
  • 1 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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