java.io.ObjectInputStream
2021-02-21 03:19
标签:code 动态 机制 set 不可 格式 NPU 检测 虚拟 readObject方法负责使用通过相应的writeObject方法写入流中的数据读取和还原其特定类的对象状态。该方法无需将自身与属于其超类或子类的状态相关。通过从ObjectInputStream读取各个字段的数据并分配给对象的相应字段来恢复状态。 DataInput支持读取原始数据类型。 任何尝试读取对象数据的尝试都超出了由相应的writeObject方法写入的自定义数据的范围,则将引发eData字段值为true的OptionalDataException。超出分配数据末尾的非对象读取将以指示数据流结束的相同方式反映数据的结束:按字节读取将返回-1作为读取的字节或读取的字节数,并且原始读取将引发EOFExceptions。如果没有相应的writeObject方法,则默认序列化数据的结尾将标记分配的数据的结尾。 从readExternal方法内发出的原始和对象读取调用的行为方式相同-如果流已经位于相应的writeExternal方法写入的数据的末尾,则对象读取将抛出OptionalDataExceptions且eof设置为true,按字节读取将返回-1,原始读取将抛出EOFExceptions。请注意,此行为不适用于使用旧的ObjectStreamConstants.PROTOCOL_VERSION_1协议编写的流,在该协议中,未区分由writeExternal方法编写的数据结尾,因此无法检测到。 如果序列化流未将给定类列出为要反序列化的对象的超类,则readObjectNoData方法负责为其特定类初始化对象的状态。在接收方使用与发送方不同的反序列化实例类的版本,并且接收方的版本扩展了发送方版本未扩展的类的情况下,可能会发生这种情况。如果序列化流已被篡改,也会发生这种情况。因此,尽管源流“敌对”或不完整,但readObjectNoData对于正确初始化反序列化的对象很有用。 序列化不会读取任何值或将值分配给任何未实现java.io.Serializable接口的对象。不可序列化的对象的子类可以被序列化。在这种情况下,不可序列化的类必须具有no-arg构造函数,以允许对其字段进行初始化。在这种情况下,子类负责保存和恢复不可序列化类的状态。通常,该类的字段是可访问的(公共,程序包或受保护),或者存在可用于还原状态的get和set方法。 反序列化对象时发生的任何异常都将被ObjectInputStream捕获并中止读取过程。 实现Externalizable接口使对象可以完全控制对象序列化表单的内容和格式。调用Externalizable接口的方法writeExternal和readExternal来保存和恢复对象状态。当由类实现时,它们可以使用ObjectOutput和ObjectInput的所有方法来写入和读取自己的状态。对象负责处理发生的任何版本控制。 枚举常量的反序列化方式与普通可序列化或可外部化的对象不同。枚举常量的序列化形式仅由其名称组成;常量的字段值不发送。为了反序列化一个枚举常量,ObjectInputStream从流中读取常量名称。然后,通过以枚举常量的基本类型和接收到的常量名称作为参数的静态方法Enum.valueOf(Class,String)来获取反序列化的常量。像其他可序列化或可外部化的对象一样,枚举常量可以用作随后出现在序列化流中的反向引用的目标。无法自定义反序列化枚举常量的过程:反序列化期间,将忽略由枚举类型定义的任何特定于类的readObject,readObjectNoData和readResolve方法。同样,任何serialPersistentFields或serialVersionUID字段声明也将被忽略-所有枚举类型的固定serialVersionUID为0L。 构造函数 方法 java.io.ObjectInputStream 标签:code 动态 机制 set 不可 格式 NPU 检测 虚拟 原文地址:https://www.cnblogs.com/YC-L/p/12677476.html
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
int i = ois.readInt();
String today = (String) ois.readObject();
Date date = (Date) ois.readObject();
ois.close();
下一篇:冒泡排序
文章标题:java.io.ObjectInputStream
文章链接:http://soscw.com/index.php/essay/58274.html