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(Objecto)方法 //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(newReadObject()); 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