void writeUnshared(Object obj) protected void writeStreamHeader abstract void put(String name, boolean val) 描述 所述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.tutorialspoint; 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 protected void writeStreamHeader abstract void put(String name, boolean val)