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

Java序列化:readObject()与readResolve()

严琨
2023-03-14
问题内容

有效的Java》
和其他资源这本书对使用可序列化Java类时如何以及何时使用readObject()方法提供了很好的解释。另一方面,readResolve()方法仍然有点神秘。基本上,我发现的所有文档都只提到了两者之一,或者只单独提到了两者。

仍未解决的问题是:

  • 两种方法有什么区别?
  • 什么时候应采用哪种方法?
  • 应该如何使用readResolve(),尤其是在返回什么方面?

希望您能对此事有所了解。


问题答案:

readResolve用于 替换
从流中读取的对象。我见过的唯一用途是强制单例。读取对象时,将其替换为单例实例。这样可以确保没有人可以通过序列化和反序列化单例来创建另一个实例。



 类似资料:
  • 问题内容: 什么之间的区别,并在上课吗?关于差异,我似乎找不到太多信息。 问题答案: 调用默认的反序列化机制,并在类上定义方法时使用。换句话说,当您具有自定义反序列化逻辑时,您仍然可以返回默认的序列化,这将对您的非静态,​​非瞬态字段进行反序列化。例如: 另一方面,当您在反序列化的对象的外部创建并想要读取先前已序列化的对象时,将使用:

  • 上一小节我们学习了 Java 的输入输出流,有了这些前置知识点,我们就可以学习 Java 的序列化了。本小节将介绍什么是序列化、什么是反序列化、序列化有什么作用,Serializable 接口以及 Externalizable 接口,常用序列化工具介绍等内容。 1. 序列化与反序列化 序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式,以留待后续在相同或另一台计算机环境中,能

  • 我有两个火花作业A和B,因此A必须在B之前运行。A的输出必须可从以下位置读取: 火花工作B Spark环境之外的独立Scala程序(没有Spark依赖) 我目前正在使用Java的本机序列化与Scala案例类。 从“火花工作”开始: 使用序列化方法: 从B Spark作业或任何独立的非Spark Scala代码: 使用反序列化方法: (嵌套的)案例类: 模型: 项目存储: 输出: 来自独立的非Spa

  • 问题内容: 我有一个需要保留在数据库中的POJO,当前设计将其字段指定为单个字符串列,并且不能在表中添加其他字段。 意思是,对象需要以某种方式进行序列化。因此,仅就基本实现而言,我去设计了自己的对象的序列化形式,这意味着将其所有字段连接到一个不错的字符串中,并用我选择的定界符分隔。但这很丑陋,并且会引起问题,例如其中一个字段包含我的定界符。 因此,我尝试了基本的Java序列化,但是从我进行的基本测

  • FAQs in section [36]: [36.1]“序列化”是什么东东? [36.2] 如何选择最好的序列化技术? [36.3] 如何决定是要序列化为可读的(“文本”)还是不可读的(“二进制”)格式? or non-human-readable ("binary") format?") [36.4] 如何序列化/反序列化数字,字符,字符串等简单类型? [36.5] 如何读/写简单类型为可读的

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