- Java.io 包类
- Java.io - 首页
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- Java.io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io 包扩展
- Java.io - 接口
- Java.io - 异常
- Java.io 包实用资源
- Java.io - 讨论
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.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