Java ObjectInputStream readObjectOverride()方法与示例

ObjectInputStream类readObjectOverride()方法

  • readObjectOverride()方法在java.io包中可用。

  • readObjectOverride()方法由ObjectOutputStream的子类调用,该子类在受保护的默认构造函数的帮助下形成了ObjectOutputStream。子类应提供带有“ final”关键字的重写方法。

  • readObjectOverride()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • 在重写对象时,readObjectOverride()方法可能会引发异常。

    • ClassNotFoundException:当序列化的对象Class不存在时,可能引发此异常。

    • IOException:在执行过程中遇到任何输入/输出错误时,可能引发此异常。

    • OptionalDataException:当发现意外的原始数据而不是对象时,可能引发此异常。

语法:

    protected Object readObjectOverride();

参数:

  • 它不接受任何参数。

返回值:

该方法的返回类型为Object,它返回从ObjectInputStream读取的Object。

示例

//Java程序演示示例 
//的readObjectOverride()ObjectInputStream中的方法

import java.io.*;
public class ReadObjectOverride extends ObjectInputStream {
 public ReadObjectOverride(InputStream in_stm) throws IOException {
  super(in_stm);
 }

 public static void main(String[] args) throws Exception {
  Integer in = new Integer(10);
  //实例化ObjectOutputStream,ObjectInputStream- 
  //FileInputStream和FileOutputStream-
  FileOutputStream file_out_stm = new FileOutputStream("D:\\includehelp.txt");
  ObjectOutputStream obj_out_stm = new ObjectOutputStream(file_out_stm);
  FileInputStream file_in_stm = new FileInputStream("D:\\includehelp.txt");
  ReadObjectOverride obj_in_stm = new ReadObjectOverride(file_in_stm);

  //通过使用writeObject()方法就是写
  //obj_out_stm流的对象
  obj_out_stm.writeObject( in );

  obj_out_stm.flush();

  //通过使用readObjectOverride()方法是读取
  //对象并将其转换为Integer-
  Integer i = (Integer) obj_in_stm.readObjectOverride();
  System.out.println("obj_in_stm.readObjectOverride(): " + i);
 }
}

输出结果

obj_in_stm.readObjectOverride(): null