Est-ce que l'ajout d'une méthode changer la serialVersionUID calculée java sur ma classe?
-
14-09-2019 - |
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?
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.