【问题标题】:Serialization and pointers Java序列化和指针 Java
【发布时间】:2012-03-21 12:53:59
【问题描述】:

当你序列化一个对象时,它是否跟随指针。假设我有一个树数据结构,树中的根和所有其他对象都实现了可序列化。我的课是这样的

类树 ... 私有节点根: ...

它是否能够跟随根作为唯一显式声明的实例变量?即使指向的元素不是成员,它会保存整个树吗?另外,当它恢复时,它会完全重新创建数据结构吗?

【问题讨论】:

  • Java 确实有指针。 Hava 正在处理指针,没有它们就无法工作。这只是让用户难以使用它们。对象引用是指针的抽象形式。事实上,它们被实现为那些,但未指定为 java 定义中的那些。指针存在,但没有易于访问的指针算术或功能

标签: java serialization


【解决方案1】:

是的,如果您的根对象及其所有字段(以及这些对象中的所有字段,等等)都是Serializable,那么序列化将保存整个结构(通过跟踪它找到的每个指针/引用)。它唯一不会保存的是任何声明为transientstatic 的字段。

请注意,序列化是 Java 甚至足够聪明地处理circular references

【讨论】:

  • 我还可以补充一点,它既不会序列化位于任何不可序列化的父类中的任何数据。
  • 我没有考虑,所以它保存了整个继承层次,只要它是可序列化的?
  • 您可以做很多事情来自定义序列化过程(例如,处理不可序列化超类中的字段)。这可能是一个有趣的阅读:java.sun.com/developer/technicalArticles/Programming/…
  • @rubixibuc 它将“保存”整个对象图,从相关对象的第一个可序列化祖先开始。
猜你喜欢
  • 2018-12-22
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多