[英]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()
需要更多的內存,但應該可以忽略不計,並且序列化空間也會增加幾個字節。
但如果您想避免自定義序列化,這絕對是最簡單的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.