Testklasse ist die Serialisierung wie folgt:Deserialisieren nur erforderliche Felder in Java
public Class Test implements Serializable {
private static final long serialVersionUID = GENERATED_LONG_VALUE;
private int val;
private SomeClass_1 val_1;
private SomeClass_2 val_2;
private SomeClass_3 val_3;
// getter and setter for above
}
Ich habe Gegenstand von oben Klasse als BLOB in Tabelle serialisiert.
Jetzt beim Deserialisieren möchte ich nur val
und val_1
. Also habe ich readObject() -Methode in Test-Klasse wie unten überschrieben.
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
this.val = (int) stream.readObject();
this.val_1 = (SomeClass_1) stream.readObject();
}
Aber nachdem auch dies wird es stream.readObject()
für val_3
und val_4
tun. Ich verstehe nicht, warum es passiert, auch ich lese nicht und val_4
in stream.readObject()
.
P.S. Ich mache Serialisierung auf server X
, während Deserialisierung es bei server Y
und Klasse Struktur ist genau das gleiche bei server Y
wie server X
.
Deklarieren Sie die Variablen, die Sie nicht serialisiert wollen [ 'transient'] (http://stackoverflow.com/a/910522/2398375) –
Ich habe diesen Ansatz auch versucht, aber es funktioniert nicht. – Dhairyashil
@VinceEmigh: Während des Serialisierens habe ich alle Felder verwendet, während beim Deserialisieren nur die ersten 2 Felder wiederhergestellt werden sollen. keine anderen Felder. aber es geht immer noch um die Bearbeitung anderer Felder. – Dhairyashil