当前位置: 首页 > 面试题库 >

如何在Java中序列化不可序列化?

查宜民
2023-03-14
问题内容

如何序列化未实现Serializable的对象?我不能将其标记为Serializable,因为该类来自第3方库。


问题答案:

您不能序列化未实现的类Serializable,但可以将其包装在可以实现的类中。为此,您应该在包装器类上实现readObjectwriteObject,以便可以以自定义方式序列化其对象。

  • 首先,使您的非序列化字段transient
  • 在中writeObject,首先调用defaultWriteObject流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。
  • 在中readObject,首先调用defaultReadObject流以读取所有非瞬态字段,然后调用其他方法(对应于您添加到的方法writeObject)来反序列化不可序列化的对象。

我希望这是有道理的。:-)



 类似资料:
  • 问题内容: 我想深入克隆一个列表。为此,我们有一种方法 所以现在要克隆我的列表,我应该先将其转换为可序列化的。是否可以将列表转换为可序列化列表? 问题答案: 已实施的所有标准实施。 因此,即使它本身不是的子类型,也可以安全地将列表强制转换为,只要您知道它是诸如或的标准实现之一。 如果不确定,请先复制列表(使用),然后知道它是可序列化的。

  • 我有一个kdtree,其节点由以下字段组成:公共静态类节点实现可序列化{ 其中DataPoint定义: 公共静态类DataPoint实现可序列化{公共可比X;公共可比Y;公共可比Z; 我想序列化树,存储在文件中并在回答范围查询时反序列化。我对这个概念od序列化的理解并不好。从我收集的任何内容中,我编写了以下函数,但不起作用。有人能帮忙吗?

  • 问题内容: 我有: 在MyClass2中是无法序列化的属性。如何序列化(和反序列化)此对象? 更正:MyClass2当然不是接口,而是类。 问题答案: 正如其他人指出的那样,Josh Bloch的Effective Java的 第11章是有关Java序列化的必不可少的资源。 该章中与您的问题有关的几点: 假设您要序列化MyClass2中不可序列化字段的状态,则MyClass必须可以直接访问该字段,

  • 我正在试验Stanford CoreNLP库,我想序列化主要的StanfordCoreNLP管道对象,尽管它抛出了一个java.io.NotSerializableException。 完整故事:每当我运行我的实现时,将管道注释器和分类器加载到内存中大约需要15秒。最终进程的内存约为600MB(很容易小到可以存储在我的机箱中)。我想在第一次创建管道后保存它,这样我就可以在以后将其读入内存。 然而,

  • 如果接口只是一个标记接口,用于在 java 中传递有关类的某种元数据 - 我有点困惑: 在阅读了java的序列化算法(元数据从下到上,然后从上到下的实际实例数据)的过程之后,我无法真正理解哪些数据不能通过该算法进行处理。 简而言之: 哪些数据可能导致? 我怎么知道我不应该为我的类添加子句?

  • 问题内容: 如果我有一个存储在会话中的类的实例,则需要使其可序列化。此类具有静态变量,是否在每个存储的实例中将其序列化? 静态变量是对在后台包含大量数据的缓存的引用。是否将所有这些数据序列化?如果是这样,则使该变量成为瞬态并在每次还原实例时重新获取缓存实例似乎是可取的。也许根本不将缓存实例存储在类中。 从序列化状态恢复类时,构造函数将执行吗?如果没有,我可以使用其他任何方法来恢复瞬态变量吗? 问题