簡體   English   中英

Java序列化readResolve方法和kryo

[英]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.

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