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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top