这个套接字将继续接收一些旧对象和同名的新对象。但是,如果我直接使用 readObject,它会抛出致命异常。我们中的一些人会建议忽略旧对象或更改旧对象代码。我无法更改客户端代码。我需要处理 向后兼容性。
Socket s = ss.accept();
ObjectInputStream lvStream = new ObjectInputStream(s.getInputStream());
Object lvObject = lvStream.readObject();
// The old class but released ( I cannot change it )
public class Apple extends HashMap<String, String> {
private static final long serialVersionUID = 1L;
}
// The old class but released ( I cannot change it )
public class Apple extends HashMap<String, String> {
private static final long serialVersionUID = 2L;
}
// The new class in my local ( 1L or 2L still would not solve the issue easily )
public class Apple extends HashMap<String, String> {
private static final long serialVersionUID = 2L;
}
在 readObject() 行,我得到了这个致命的异常:
java.io.InvalidClassException 本地类不兼容:流 classdesc serialVersionUID = 1,本地类 serialVersionUID = 2
我如何读取这两种 Apple 对象数据(Hashmap)?
谢谢你。