ho un oggetto come segue:Java Seralization e Deseralization
public class Records implements java.io.Serializable{
private int cId;
private int pId;
private int vlaue;
private int tag;
public Records(int c, int p, int v, int t){
this.cId=c;
this.pId=p;
this.value=v;
this.tag=t;
}
}
ho raccolto un sacco di dati, costruiti oggetti come nella classe superiore e li seralized su disco.
Una cosa discarica ho dimenticato di includere nel file di classe è metodi per accedere ai valori per ciascun oggetto. Ad esempio, per accedere al valore cId per un oggetto particolare.
ho modificato la definizione di classe per aggiungere tali metodi, ma poi non ho potuto deseralize gli oggetti di nuovo in classe Records e ottenere questo errore di runtime:
java.io.InvalidClassException: Records; local class incompatible: stream classdesc serialVersionUID = -1232612718276774474, local class serialVersionUID = -8244963718951538904
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:579)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1600)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
at DeSerialise.main(DeSerialise.java:21)
Penso che ho bisogno di dire java che sono il le stesse definizioni e modificano il serialVersionUID ma non sono sicuro di come? qualsiasi idea sarebbe accolta!
Troverete buona spiegazione del problema su questa questione: http://stackoverflow.com/q/285793/1916110 – Tom