我想要序列化一个类,并且它实现了 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(使用前将#替换为@)