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()方法的声明。 -
参数
obj写入流的对象。 -
返回值
此方法不返回值。 -
异常
-
NotSerializableException如果图中要序列化的对象未实现Serializable接口。
-
InvalidClassException如果要序列化的对象的类存在问题。
-
IOException如果在序列化期间发生I / O错误。
-
-
例子
以下示例显示java.io.ObjectOutputStream.writeUnshared()方法的用法。让我们编译并运行以上程序,这将产生以下结果-