簡體   English   中英

如何在Java中使用內部類實例獲取外部類實例

[英]How to get an outer class instance with an inner class instance in Java

實踐中的Java並發性書中,當談論發布對象的方法時,有一種機制是發布內部類實例 ,這是不安全的,因為

內部類實例包含對封閉實例的隱藏引用

我想知道,如果不能通過內部類實例獲取外部類實例,那會不安全,那會影響GC嗎? 我很困惑,是否有辦法像反射那樣獲得一個外部類實例?

它不會影響您可能想到的GC。 JVM使用可達性分析,而不是自動引用計數,因此當從起始主對象的對象圖中都無法訪問它們時,可以將兩者釋放。

這是不安全的-我想它們的意思是發布為序列化​​和發送-,因為通過引用外部實例也將被序列化,從而導致更大的消息和/或序列化異常(如果它包含某些內容-non-transient- not serializable member or own不可序列化)。

我不確定外部對象引用名稱是否以任何方式進行了標准化,因此通過反射訪問它們需要一些反復試驗(顯然是測試)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM