Test Класс сериализовать выглядит следующим образом:десериализации только необходимые поля в 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
}
Я сериализован Объект указанного класса как BLOB в таблице.
Теперь при десериализации я просто хочу val
и val_1
. Итак, я переопределил метод readObject() в тестовом классе, как показано ниже.
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
this.val = (int) stream.readObject();
this.val_1 = (SomeClass_1) stream.readObject();
}
Но после того, как это также, он делает stream.readObject()
для val_3
и val_4
. Я не понимаю, почему это происходит, даже я не читаю val_3
и val_4
в stream.readObject()
.
P.S. Я делаю сериализацию на server X
, десериализуя его на server Y
и класс Структура точно такая же, как и у server Y
, как server X
.
Объявите переменные, которые вы не хотите сериализовать [ 'transient'] (http://stackoverflow.com/a/910522/2398375) –
Я попробовал этот подход тоже, но он не работает. – Dhairyashil
@VinceEmigh: при сериализации я использовал все поля, а десериализую мне нужны только первые 2 поля для восстановления. не в других областях. но все же он предназначен для обработки других полей. – Dhairyashil