[英]Java serialization readResolve method and kryo
我正在嘗試傳輸一個包含瞬態字段的類(一個對序列化沒有意義的緩存)。 過去,該字段是使用標准 Java 序列化框架提供的 readResolve 方法重新創建的。
public class MyClass implements Serializable {
private transient LoadingCache<Key, Value> someCache;
//this works when using default java tools. I need an equivalent method in kryo framework
Object readResolve() {
someCache = createNewCache();
return this;
}
}
Kryo 不會執行該方法,是否有不同的方式告訴 kryo 需要對反序列化對象執行哪些操作才能重新初始化狀態?
自定義序列化器不是一個選項,項目中已經有許多不同的序列化器都需要調整。
找到了一個解決方案,但我仍然對更好的東西持開放態度:我創建了一個注釋,它被添加到反序列化對象的目標方法上。 然后我添加了一個自定義的 com.esotericsoftware.kryo.ClassResolver 來掃描該注釋的新注冊。
如果它找到了該注冊的序列化程序,則該序列化程序將包裝在委托序列化程序中,該序列化程序會在重新創建對象后執行帶注釋的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.