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

java对象序列化readObject / defaultReadObject

丌官嘉福
2023-03-14
问题内容

什么之间的区别readObject,并defaultReadObjectObjectInputStream上课吗?关于差异,我似乎找不到太多信息。


问题答案:

defaultReadObject()调用默认的反序列化机制,并readObject()Serializable类上定义方法时使用。换句话说,当您具有自定义反序列化逻辑时,您仍然可以返回默认的序列化,这将对您的非静态,​​非瞬态字段进行反序列化。例如:

public class SomeClass implements Serializable {
    private String fld1;
    private int fld2;
    private transient String fld3; 
    private void readObject(java.io.ObjectInputStream stream)
         throws IOException, ClassNotFoundException {
         stream.defaultReadObject(); //fills fld1 and fld2;
         fld3 = Configuration.getFooConfigValue();
    }
]

另一方面,readObject()当您ObjectInputStream在反序列化的对象的外部创建并想要读取先前已序列化的对象时,将使用:

ObojectInputStream stream = new ObjectInputStream(aStreamWithASerializedObject);
Object foo = (Foo) stream.readObject();


 类似资料:
  • 问题内容: 《 有效的Java》 和其他资源这本书对使用可序列化Java类时如何以及何时使用readObject()方法提供了很好的解释。另一方面,readResolve()方法仍然有点神秘。基本上,我发现的所有文档都只提到了两者之一,或者只单独提到了两者。 仍未解决的问题是: 两种方法有什么区别? 什么时候应采用哪种方法? 应该如何使用readResolve(),尤其是在返回什么方面? 希望您能

  • 本文向大家介绍java对象的序列化和反序列化,包括了java对象的序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化        将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化

  • 我想将这个对象序列化为JSON字符串 并得到如下结果: 我试着用 但不是这样,我得到了: 个性化序列化: 欢迎提出任何建议 谢谢,马里奥

  • 错误: java.lang.ClassNotFoundException:testprocedure.tp$3在java.net.URLClassLoader$1上运行(未知源)在java.net.URLClassLoader上运行(未知源)在java.security.accessController.doprivileged(本机方法)在java.net.URLClassLoader.find

  • 本文向大家介绍详解Java 对象序列化和反序列化,包括了详解Java 对象序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 之前的文章中我们介绍过有关字节流字符流的使用,当时我们对于将一个对象输出到流中的操作,使用DataOutputStream流将该对象中的每个属性值逐个输出到流中,读出时相反。在我们看来这种行为实在是繁琐,尤其是在这个对象中属性值很多的时候。基于此,Java中对象的序列

  • 本文向大家介绍Java中对象序列化与反序列化详解,包括了Java中对象序列化与反序列化详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java中对象序列化与反序列化。分享给大家供大家参考。具体如下: 一、简介 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。 序列化一般用于以下场景: 1.永久性保存对象,保存对象的字节序列