java.io.ObjectOutputStream.replaceObject(Object obj)方法允许ObjectOutputStream的受信任子类的序列化过程中一个对象替代另一个。替换对象被禁用,直到enableReplaceObject被调用。enableReplaceObject方法检查流要求做置换是可以信任的。写入序列化流中的每个对象的第一个匹配传递给replaceObject。该对象随后引用由以replaceObject原调用返回的对象取代。为了确保对象的私有状态不是无意暴露,只有受信任的流使用replaceObject。

ObjectOutputStream.writeObject方法接受一个Object类型的参数(而不是键入序列化),以便在那里不可序列化的对象是通过序列化所取代的情况。

当一个子类取代对象时,必须确保任何一个互补的替代必须在反序列化或者说取代对象与参考将被存储的每个字段兼容的进行。对象,其类型不是字段或数组元素中止序列化的通过引发异常,对象不会被保存的类型的子类。

此方法只调用一次是在第一次遇到每个对象时。该对象的所有后续引用将被重定向到新对象。此方法应返回到被取代的对象或原始对象。null可以返回以被取代的对象,但可能会导致NullReferenceException异常在于包含对原始的对象,因为这是它们期望的对象,而不是空的类。

声明

以下是java.io.ObjectOutputStream.replaceObject()方法的声明

protectedObjectreplaceObject(Objectobj)

参数

obj -- 要被替换的对象

返回值

此方法返回替换指定一个替代对象

异常

IOException -- 任何异常由底层的OutputStream抛出。

例子

下面的示例演示java.io.ObjectOutputStream.replaceObject()方法的用法。

packagecom.yiibai;importjava.io.*;publicclassObjectOutputStreamDemoextendsObjectOutputStream{publicObjectOutputStreamDemo(OutputStreamout)throwsIOException{super(out);}publicstaticvoidmain(String[]args){Objects="Hello World!";Objects2="Bye World!";try{// create a new file with an ObjectOutputStreamFileOutputStreamout=newFileOutputStream("test.txt");ObjectOutputStreamDemooout=newObjectOutputStreamDemo(out);// write something in the fileoout.writeObject(s);oout.flush();// enable object replacingoout.enableReplaceObject(true);// replace objectSystem.out.println(""+oout.replaceObject(s2));// close the streamoout.close();// create an ObjectInputStream for the file we created beforeObjectInputStreamois=newObjectInputStream(newFileInputStream("test.txt"));// read and print an intSystem.out.println(""+(String)ois.readObject());}catch(Exceptionex){ex.printStackTrace();}}}

让我们编译和运行上面的程序,这将产生以下结果:

ByeWorld!HelloWorld!

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java的io中replace咋么使用_Java.io.ObjectOutputStream.replaceObject()方法实例相关推荐

  1. java string replace 重载_关于Java:如何使用replace(char,char)替换字符b的所有实例为空...

    如何使用replace(char,char)将字符" b"的所有实例全部替换为空. 例如: Hambbburger to Hamurger 编辑:有一个约束,我只能使用1.4.2, ...

  2. 5.0 java集合框架中的接口collection属于_JAVA集合框架 - osc_cyo2dovg的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.为什么要使用集合 单个数据,可以用变量保存: 多个数据,可以用数组保存: 但是对于存储多个数据且数量不确定的情况,使用集合: 二.集合和数组的区别 (1)数组: 1.只能保存同一种类型的数据: 2 ...

  3. java查找字符串中包含子字符串的个数,灵活运用String方法,3种方法的代码实现!

    第一种方法: 灵活运用split方法!直接把子字符串作为split的参数传进去,看看原字符串被分割成了几部分,得到的String数组的length.然后length - 1就是 需要查询的子字符串的个 ...

  4. java中Math.pow()实例_Java.math.BigDecimal.pow()方法实例

    全屏 Java.math.BigDecimal.pow()方法实例 java.math.BigDecimal.pow(int n)返回一个BigDecimal,其值是 (thisn), 被精确计算的幂 ...

  5. java中signum使用_Java.math.BigInteger.signum()方法实例

    全屏 Java.math.BigInteger.signum()方法实例 java.math.BigInteger.signum()返回此BigInteger的函数正负号. 声明 以下是java.ma ...

  6. java plus方法_Java.math.BigDecimal.plus()方法实例

    全屏 Java.math.BigDecimal.plus()方法实例 java.math.BigDecimal.plus() 返回一个BigDecimal,其值是 (+this),并且其刻度为是 th ...

  7. Java在开发中应注意的问题_Java设计编程应该注意的几个问题

    小李飞刀 阅读(193) 评论(0)  编辑  收藏 老话题了,自己收集总结了一下 代码调试排错通常是一个痛苦的过程,至少我是这么认为的:-).对开发人员而言,其实可以在设计和编码时期加以控制,以提高 ...

  8. java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数

    参见英文答案 > Java compressing Strings                                    18个 我正在尝试编写一个Java程序,它接受一个字符串 ...

  9. python中io中的+模式_Python----文件的IO操作

    一.文件操作 打开文件 假设我们有一个file.txt文件,内容为: abcdefg jijklmn opqtsr uvwxyz data = open('file.txt',encoding=&qu ...

最新文章

  1. 新款Tesla最低仅售26.2万,马斯克终于凑齐了S3XY
  2. POJ 3126 Prime Path(筛法,双向搜索)
  3. SIP可靠性(SIP Reliability)
  4. 938. 二叉搜索树的范围和
  5. C#.Net工作笔记019---葡萄城控件FlexGrid自定义风格_比如给某列设置某个颜色_该颜色不受选择行的影响
  6. 「镁客早报」第九城市与法拉第未来成立合资公司,出资6亿美元;华为获得韩国运营商5G订单,占比95%... 1
  7. 改变函数this指向
  8. 生信-使用NCBI进行目的基因的引物设计
  9. Acrobat XI的破解补丁amtlib.dll可能的一些问题
  10. AVOD:点云数据与BEV图的处理及可视化
  11. 详细的log4j配置使用流程
  12. js 监听浏览器刷新操作
  13. 编写用户故事模板_编写踢屁股用户故事
  14. 活动回顾|Derek做客Staking Mondays
  15. matlab 模拟心电图,使用原生js+canvas实现模拟心电图的实例
  16. mongoose populate 填充
  17. 蛮荒搜神记服务器在维护,蛮荒搜神记法宝洗练图文教程 蛮荒搜神记如何提升战斗力?-游侠网...
  18. ASR_intern_summary
  19. 强烈分享两个功能强大,可以极大提高工作效率的软件
  20. url地址中有特殊符号“引号”引发的错误

热门文章

  1. 如何理解 Python 中的面向对象编程?
  2. AI 补代码神器诞生,百度网盘克星诞生,Google 取消中国搜索引擎项目! | 开发者周刊...
  3. 华为最强自研 NPU 问世,麒麟 810 测评远超骁龙系列!
  4. 进击的程序媛:毕业于斯坦福,Google 元老级员工,曾任雅虎 CEO | 人物志
  5. 英特尔资深院士马克·波尔的传奇人生 | 人物志
  6. 如何用 Linux 技巧大大提高工作效率?
  7. Google 杀死 URL 的第一步
  8. 微软自证开源决心:GitHub 私有库免费无限开放!
  9. 这一天,我用 Rust 重写了已有 19 年历史的 C++ 库!
  10. 80 后技术人的中年危机