在java中,是否可以将Serialized接口添加到运行时没有它的类中?

2024-02-09

我想要序列化一个类,并且它实现了 Serializable,但它包含的对象之一没有实现 Serializable。

有没有办法在运行时修改类以使其实现 Serialized 接口,以便我可以序列化它?我无法在编译时更改它,因为它是第三方库。

也许我必须使用某种字节码编写器或其他东西?

编辑:包含类和包含类都在第 3 方库中,所以我认为我不能将某些内容标记为瞬态。包含类is标记为可序列化,但它包含一个不可序列化的对象。

我可以为该类编写自定义序列化方法,但不确定如何执行此操作,我是否必须使用反射来获取私有变量的值?


阅读可序列化的 javadoc,我看到:

需要特殊处理的类 在序列化期间和 反序列化过程必须执行 这些精确的特殊方法 签名:

private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException;
 private void readObjectNoData() 
     throws ObjectStreamException;

您可以使用它来手动序列化不合作的字段。您可以考虑使用 ASM,但似乎很难相信它是一个可维护的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在java中,是否可以将Serialized接口添加到运行时没有它的类中? 的相关文章

随机推荐