可序列化的类,在JAVA中具有不可序列化的注入成员

时间:2014-11-18 10:07:41

标签: java guice

我有一个可序列化的类,其中有一些成员从guice模块注入。但是,这些成员是不可序列化的,我不能强制使用Serializable接口声明它们。 如何为此类编写readObject和writeObject函数以支持序列化此类的实例?

1 个答案:

答案 0 :(得分:3)

您可以将这些字段声明为transient,以防止自动序列化或实施您自己的readObjectwriteObject。实施将取决于您的申请。如果在反序列化后你可以在没有可序列化成员的情况下站起来,那就忽略它们。如果你需要它们,你必须找到一种方法来获得它们。

在你的情况下,这些是Guice注入的对象。如果您计划在Guice的上下文中反序列化您的对象,则必须注入这些依赖项。我不太了解Guice但在春天我知道两种方式:

  1. 以编程方式从当前的Spring(在您的案例中为Guice)应用程序上下文中获取这些对象。
  2. Spring有工厂可以自己注入所有需要的依赖项。我相信Guice应该有类似的功能。