Question

Si j'ai une classe comme ceci:

public class Name implements Serializable {
    private final String firstName;
    private final String lastName;

    public Name(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

Est-ce que son calcul serialVersionUID changer si j'ajoute une autre méthode (et pas de champs supplémentaires)?

Par exemple, ajouter la méthode:

public String getFullName() {
    return firstName + " " + lastName;
}

Sinon, est-il un bon outil pour comprendre cela?

Était-ce utile?

La solution

Oui, il va changer le serialVersionUID.

Vous pouvez utiliser l'outil de ligne de commande serialver - au moins dans Sun JDK pour calculer la serialVersionUID pour une classe compilée donnée

.

Autres conseils

Oui, cela va changer. Un moyen facile est Eclipse: Si la classe implémente Serializable et que vous n'êtes pas un champ serialVersionUID, l'EDI affiche un symbole d'avertissement. Vous pouvez cliquer sur le signe d'avertissement et sélectionnez « Ajouter UID version série générée ». Cela calcule un serialVersionUID pour vous et l'insérer dans votre code.

Quand je commencé à tester mes haricots, il m'a semblé que le serialVersionUID a été régénéré lorsque la classe était compilé , non seulement quand sa signature a changé. La raison pour cela pourrait être la construction Maven et le fait que l'ancienne classe a été supprimée avant la nouvelle construction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top