您可以通过扩展ObjectInputStream来做到这一点:
public class PrintUIDs extends ObjectInputStream { public PrintUIDs(InputStream in) throws IOException { super(in); } @Override protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException { ObjectStreamClass descriptor = super.readClassDescriptor(); System.out.println("name=" + descriptor.getName()); System.out.println("serialVersionUID=" + descriptor.getSerialVersionUID()); return descriptor; } public static void main(String[] args) throws IOException, ClassNotFoundException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); List<Object> list = Arrays.asList((Object) new Date(), UUID.randomUUID()); oos.writeObject(list); oos.close(); InputStream in = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new PrintUIDs(in); ois.readObject(); }}我相信可以通过替换方法返回的描述符来读取所有序列化的数据,但是我还没有尝试过。



