鴻蒙OS 弱

2020-10-15 10:07 更新

注釋弱參考對(duì)象。

此類(lèi)提供了使用弱引用注釋字段的方法。此類(lèi)字段可由 RC / GC 回收。回收這些字段后,讀取它們時(shí)將返回 null。這允許字段由代碼邏輯正確處理。

以 HashMap 的 entrySet 為例。內(nèi)部類(lèi)和外部類(lèi)對(duì)象形成循環(huán)引用。因此,您不能使用 UnownedOuter 來(lái)注釋內(nèi)部類(lèi),因?yàn)?entrySet 可以作為 Set 傳遞給 HashMap 的外部。在這種情況下,您可以將 entrySet 注釋為弱引用。如果 entrySet 被回收,則可以使用 entrySet()方法返回?zé)o狀態(tài) entrySet 對(duì)象。

請(qǐng)參考以下示例代碼:

   public class HashMap<K,V> extends AbstractMap<K,V>
       implements Map<K,V>, Cloneable, Serializable {
       ...;
       @Weak
       transient Set<Map.Entry<K,V>> entrySet;
       ...;
       public Set<Map.Entry<K,V>> entrySet() {
           Set<Map.Entry<K,V>> es;
           return (es = entrySet) == null ? (entrySet = new EntrySet()) : es;
       }
   }

 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)