java命名空间java.io类objectinputstream的类成员方法:
readunshared定义及介绍
本文导语:
readunshared
public object readunshared()
throws ioexception,
classnotfoundexception
从 objectinputstream 读取“非共享”对象。此方法与 readobject 类似,不同点在于它可以防止对 readobject 和 readunshared 的后续调用返...
readunshared
public object readunshared()
throws ioexception,
classnotfoundexception
- 从 objectinputstream 读取“非共享”对象。此方法与 readobject 类似,不同点在于它可以防止对 readobject 和 readunshared 的后续调用返回对通过此调用获取的反序列化实例的附加引用。尤其是:
- 如果调用 readunshared 反序列化反向引用(以前写入流的对象的流表示形式),则抛出 objectstreamexception。
- 如果 readunshared 成功返回,则反序列化对由 readunshared 反序列化的流句柄的反向引用的任何后续尝试,都将导致抛出 objectstreamexception。
通过 readunshared 反序列化一个对象使得与返回对象关联的流句柄无效。注意,此操作本身不能始终保证由 readunshared 返回的引用是唯一的;反序列化对象可能定义一个 readresolve 方法,该方法将返回一个对其他方可见的对象,或者 readunshared 可能返回一个从流中其他地方或通过外部方法获得的 class 对象或 enum 常量。如果反序列化对象定义一个 readresolve 方法并且该方法的调用返回一个数组,则 readunshared 返回该数组的浅表副本;此规则保证返回的数组对象是唯一的,不能通过对 objectinputstream 调用 readobject 或 readunshared 再次获得,即使能操纵底层数据流时也是如此。
重写此方法的 objectinputstream 子类只能在处理 "enablesubclassimplementation" serializablepermission 的安全上下文中构造;在不具有此权限的情况下,任何实例化这种子类的尝试都将导致抛出 securityexception。
- 返回:
- 反序列化对象的引用
- 抛出:
classnotfoundexception
- 如果找不到要反序列化的对象的类
streamcorruptedexception
- 如果流中的控制信息不一致
objectstreamexception
- 如果流中已经出现了要反序列化的对象
optionaldataexception
- 如果基本数据是流中的下一项
ioexception
- 如果在反序列化期间发生 i/o 错误- 从以下版本开始:
- 1.4