Сериализуемый интерфейс - PullRequest
4 голосов
/ 09 января 2010

У меня есть класс, который реализует интерфейс java.io.Serializable. Таким образом, все переменные в этом классе являются serilaizable. Но я хочу, чтобы некоторые переменные не были сериализуемыми. Возможно ли это?

спасибо, Ravi

Ответы [ 3 ]

4 голосов
/ 09 января 2010

Отметьте эти переменные как transient.

, например

class A implements Serializable{
    int a;
    transient int b;
}

При сериализации объекта A переходное поле b не будет сериализовано.

1 голос
/ 09 января 2010

Если вы не хотите использовать transient (почему бы и нет?), Вы можете реализовать Externalizable и реализовать свой собственный протокол:

public class Spaceship implements Externalizable {

    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        // ...
    }

    public void writeExternal(ObjectOutput out) throws IOException {
        // ...
    }

}

Если это слишком экстремально, может быть, вы просто хотите немного настроить сериализацию? Продолжайте внедрять Serializable и внедрять свои собственные методы writeObject и readObject.

Вот несколько примеров: http://java.sun.com/developer/technicalArticles/Programming/serialization/

0 голосов
/ 10 декабря 2014

Вы можете сделать переменную переходной единицу и посмотреть статью ниже для полного понимания Serializable Interface

http://www.codingeek.com/java/io/object-streams-serialization-deserialization-java-example-serializable-interface/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...