ObjectOutputStream writeUnshared()方法
java.io.ObjectOutputStream.writeUnshared(Object obj) 此方法写入了“非共享”对象到对象输出流。
这种方法与writeObject相同,不同之处在于它总是在给定对象写入的数据流在一个新的,独特的对象(而不是一个向后引用指向一个先前序列化实例)具体而言:
-
通过writeUnshared写入一个对象始终序列中相同的方式作为一个新出现的对象(即还没有被写入到该流又一个目的),而不管是否该对象已经被预先写入。
-
如果writeObject是用来写之前已经写入writeUnshared对象,之前的writeUnshared操作被视为好像它是一个单独的对象的写操作。换句话说,对象输出决不会产生反向引用对象是由调用writeUnshared数据。
同时通过writeUnshared写入对象本身并不保证唯一引用时,反序列化的对象,它允许在流中多次定义一个对象,以便多个调用由接收器不会冲突readUnshared。请注意,上述规则仅适用于写入writeUnshared基础级别的对象,而不是被序列化的传递地引用对象图中的子对象。
ObjectOutputStream子类的重写此方法只能在安全上下文拥有“enableSubclassImplementation”的SerializablePermission构造;任何试图实例化这样一个子类没有此权限将导致抛出SecurityException。
1 语法
public void writeUnshared(Object obj)
2 参数
obj:写入流的对象。
3 返回值
无
4 示例
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* java.io.ObjectOutputStream.writeUnshared(Object obj)方法的例子
*/
import java.io.*;
public class Demo {
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
热门文章
优秀文章