Java Java.io.ObjectOutputStream.writeUnshared() 方法
-
描述
java.io.ObjectOutputStream.writeUnshared(Object obj)方法将一个“未共享”对象写入ObjectOutputStream。此方法与writeObject相同,不同之处在于它始终将给定对象写为流中新的唯一对象(与指向先前序列化实例的反向引用相反)。-
通过writeUnshared写入的对象始终以与新出现的对象(尚未写入流的对象)相同的方式进行序列化,而不管该对象先前是否已写入。
-
如果使用writeObject写入先前使用writeUnshared写入的对象,则将先前的writeUnshared操作视为对单独对象的写入。换句话说,ObjectOutputStream将永远不会生成对通过writeUnshared调用写入的对象数据的反向引用。
虽然通过writeUnshared写入对象本身并不能保证在反序列化对象时对对象进行唯一引用,但它允许在流中多次定义单个对象,因此接收方对readUnshared的多次调用不会冲突。请注意,上述规则仅适用于使用writeUnshared编写的基本级对象,不适用于要序列化的对象图中的任何可传递引用的子对象。覆盖此方法的ObjectOutputStream子类只能在具有“ enableSubclassImplementation” SerializablePermission的安全上下文中构造;在没有此权限的情况下实例化此类子类的任何尝试都将导致引发SecurityException。 -
-
声明
以下是java.io.ObjectOutputStream.writeUnshared()方法的声明。public void writeUnshared(Object obj)
-
参数
obj写入流的对象。 -
返回值
此方法不返回值。 -
异常
-
NotSerializableException如果图中要序列化的对象未实现Serializable接口。
-
InvalidClassException如果要序列化的对象的类存在问题。
-
IOException如果在序列化期间发生I / O错误。
-
-
例子
以下示例显示java.io.ObjectOutputStream.writeUnshared()方法的用法。package com.jc2182; import java.io.*; public class ObjectOutputStreamDemo { public static void main(String[] args) { Object s = "Hello World!"; Object i = 1974; try { // create a new file with an ObjectOutputStream FileOutputStream out = new FileOutputStream("test.txt"); ObjectOutputStream oout = new ObjectOutputStream(out); // write something in the file oout.writeUnshared(s); oout.writeUnshared(i); // close the stream oout.close(); // create an ObjectInputStream for the file we created before ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.txt")); // read and print what we wrote before System.out.println("" + ois.readUnshared()); System.out.println("" + ois.readUnshared()); } catch (Exception ex) { ex.printStackTrace(); } } }
让我们编译并运行以上程序,这将产生以下结果-Hello World! 1974