Java ObjectOutputStream replaceObject()方法与示例

ObjectOutputStream类replaceObject()方法

  • replaceObject()方法在java.io包中可用。

  • replaceObject()方法用于允许ObjectOutputStream的所有受信任子类在序列化时将给定对象替换为另一个。停用对象替换,直到enableReplaceObject()可以信任请求进行替换的流的字符为止。序列化流中写入的每个对象的第一次出现都传递给replaceObject。对对象的后续引用将由对replaceObject的调用所检索的对象替换。它仅允许受信任的流替换对象。

  • replaceObject()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • replaceObject()方法在替换对象时可能会引发异常。
    IOException:在写入输出流时遇到任何输入/输出错误时,可能引发此异常。

语法:

    protected Object replaceObject(Object o);

参数:

  • 对象o –表示要替换的对象。

返回值:

此方法的返回类型为Object,它返回另一个替换给定对象的替代对象。

示例

//Java程序演示示例 
//对象的replaceObject(Object o)方法 
//ObjectOutputStream-

import java.io.*;

public class ReplaceObject extends ObjectOutputStream {
 public ReplaceObject(OutputStream os_stm) throws IOException {
  super(os_stm);
 }

 public static void main(String[] args) throws IOException {
  String str = "Java World!!!";

  try {
   //实例化ObjectOutputStream,ObjectInputStream- 
   //FileInputStream和FileOutputStream-
   FileOutputStream file_out_stm = new FileOutputStream("D:\\includehelp.txt");
   ReplaceObject obj_out_stm = new ReplaceObject(file_out_stm);
   FileInputStream file_in_stm = new FileInputStream("D:\\includehelp.txt");
   ObjectInputStream obj_in_stm = new ObjectInputStream(file_in_stm);

   //obj_out_stm.writeObject(new ReadObject());  
   obj_out_stm.writeUTF(str);
   obj_out_stm.flush();

   //通过使用enableReplaceObject()方法是
   //启用物件抵抗
   System.out.println("enableReplaceObject() invoked: ");
   boolean status = obj_out_stm.enableReplaceObject(true);
   System.out.println("obj_in_stm.enableReplaceObject(true): " + status);

   Object o = obj_out_stm.replaceObject("Java Programmer");
   System.out.println("obj_out_stm.replaceObject(Java Programmer): " + o);
  } catch (Exception ex) {
   ex.printStackTrace();
  }
 }
}

输出结果

enableReplaceObject() invoked: 
obj_in_stm.enableReplaceObject(true): false
obj_out_stm.replaceObject(Java Programmer): Java Programmer