Java Java.io.ObjectInputStream.readObject() 方法
-
描述
java.io.ObjectInputStream.readObject()方法从ObjectInputStream读取一个对象。读取对象的类,类的签名以及该类及其所有超类型的非瞬态和非静态字段的值。可以使用writeObject和readObject方法来覆盖类的默认反序列化。该对象引用的对象是可传递的,因此readObject可以重建对象的完整等效图。当根对象的所有字段及其引用的对象都完全还原时,根对象将完全还原。此时,对象验证回调将根据其注册优先级按顺序执行。回调由对象(在readObject特殊方法中)注册,因为它们分别进行了恢复。对于InputStream的问题和不应反序列化的类,将引发异常。所有异常对InputStream都是致命的,并使其处于不确定状态;调用者可以忽略或恢复流状态。 -
声明
以下是java.io.ObjectInputStream.readObject()方法的声明。public final Object readObject()
-
参数
不适用 -
返回值
此方法返回从流中读取的对象。 -
异常
-
ClassNotFoundException找不到序列化对象的类。
-
InvalidClassException序列化使用的类出了点问题。
-
StreamCorruptedException流中的控制信息不一致。
-
OptionalDataException在流中找到原始数据,而不是对象。
-
IOException任何与输入/输出相关的常规异常。
-
-
例子
以下示例显示java.io.ObjectInputStream.readObject()方法的用法。package com.jc2182; import java.io.*; public class ObjectInputStreamDemo { public static void main(String[] args) { String s = "Hello World"; byte[] b = {'e', 'x', 'a', 'm', 'p', 'l', 'e'}; 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.writeObject(s); oout.writeObject(b); oout.flush(); // create an ObjectInputStream for the file we created before ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.txt")); // read and print an object and cast it as string System.out.println("" + (String) ois.readObject()); // read and print an object and cast it as string byte[] read = (byte[]) ois.readObject(); String s2 = new String(read); System.out.println("" + s2); } catch (Exception ex) { ex.printStackTrace(); } } }
让我们编译并运行以上程序,这将产生以下结果-Hello World example