このソケットは、同じ名前の古いオブジェクトと新しいオブジェクトを受け取り続けます。ただし、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
この 2 種類の Apple オブジェクト データ (ハッシュマップ) をどのように読み取ることができますか?
ありがとうございました。