A adição de um método mudará o SerialversionUid calculado por Java na minha classe?
-
14-09-2019 - |
Pergunta
Se eu tenho uma aula como esta:
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;
}
}
O seu SerialVersionUID calculado mudará se eu adicionar outro método (e nenhum campo adicional)?
Por exemplo, adicionando o método:
public String getFullName() {
return firstName + " " + lastName;
}
Como alternativa, existe uma boa ferramenta para descobrir isso?
Solução
Sim, vai mudar o serialVersionUID
.
Você pode usar o serialver
Ferramenta de linha de comando - pelo menos no JDK da Sun para calcular o serialVersionUID
Para uma determinada classe compilada.
Outras dicas
Sim, isso vai mudar. Uma maneira fácil é o eclipse: se a classe implementa serializável e você não fornecer um campo serialversionUid, o IDE exibe um símbolo de aviso. Você pode clicar no sinal de aviso e selecionar "Adicionar versão em série gerada UID". Isso calculará um serialversionUid para você e insira -o no seu código.
Quando comecei a testar meus feijões, parecia -me que o serialversionuid foi regenerado quando a aula era compilado, não apenas quando sua assinatura mudou. A razão para isso poderia ser a construção do Maven e o fato de a classe antiga ter sido excluída antes da nova construção.