Java.io.ObjectOutputStream.annotateClass()方法实例
java.io.ObjectOutputStream.annotateClass(Class<?> cl) 可以由子类来实现,以允许类的数据被存储在流中。默认情况下,此方法不执行任何操作。在ObjectInputStream的对应方法是resolveClass。这个方法被流中的每个唯一的类调用一次。类名和签名将写入流。此方法可以自由使用ObjectOutputStream来保存,类的任何声明适用(例如,类文件的字节数)。在ObjectInputStream中的相应子类resolveClass方法必须读取和使用数据或写入annotateClass对象。
声明
以下是java.io.ObjectOutputStream.annotateClass()方法声明
protected void annotateClass(Class<?> cl)
参数
-
cl -- 类注释的自定义数据
返回值
此方法没有返回值
异常
-
NA
例子
下面的示例演示java.io.ObjectOutputStream.annotateClass()方法的用法。
package com.yiibai; import java.io.*; public class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] args) { int i = 319874; try { // create a new file with an ObjectOutputStream FileOutputStream out = new FileOutputStream("test.txt"); ObjectOutputStreamDemo oout = new ObjectOutputStreamDemo(out); // write something in the file oout.writeInt(i); oout.writeInt(1653984); oout.flush(); // call annotateClass but it does nothing oout.annotateClass(Integer.class); // create an ObjectInputStream for the file we created before ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.txt")); // read and print an int System.out.println("" + ois.readInt()); // read and print an int System.out.println("" + ois.readInt()); } catch (Exception ex) { ex.printStackTrace(); } } }
让我们编译和运行上面的程序,这将产生以下结果:
319874 1653984