protected void annotateClass(Class cl) abstract ObjectStreamClass getObjectStreamClass protected void annotateProxyClass(Class cl) 描述 所述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.tutorialspoint; 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 abstract ObjectStreamClass getObjectStreamClass protected void annotateProxyClass(Class cl)