簡體   English   中英

可以為 Serializable 類設置鎖瞬態嗎?

[英]Is it okay to to make the lock transient for a Serializable class?

我有一個實現Serializable的類,我通過一個Object類型的對象來保護這個類的不變量。 讓它變得短暫是否可以,或者它會產生任何不需要的副作用嗎?

代碼 :

class MyClass implements Serializable{

 private final transient lock = new Object();
  ....
}

您應該做的是改用一個空數組(甚至是new Object[0] )。 空數組是可序列化的,而new Object()不是。

做就是了:

private final Object lock = new Object[0];

自動(反)序列化將按預期工作,將重新創建鎖。 它可能比new Object()需要更多的內存,但應該可以忽略不計,並且序列化空間也會增加幾個字節。

但如果您想避免自定義序列化,這絕對是最簡單的解決方案。

這很好,只要您在反序列化時重新創建對象,以便您有一些東西可以同步。

此外,您可能必須刪除final修飾符

這是否值得麻煩由您來決定。

暫無
暫無

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

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