Domanda

Se ho una classe come questa:

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;
    }
}

Verrà calcolato serialVersionUID cambiare se posso aggiungere un altro metodo (e non altri campi)?

Per esempio, aggiungendo il metodo:

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

In alternativa, c'è un bel strumento per capire tutto questo?

È stato utile?

Soluzione

Sì, cambierà il serialVersionUID.

È possibile utilizzare il serialver strumento a riga di comando, almeno in Sun JDK per calcolare il serialVersionUID per una data classe compilata.

Altri suggerimenti

Sì, cambierà. Un modo semplice è Eclipse: Se la classe implementa Serializable e non forniscono un campo serialVersionUID, l'IDE visualizza un simbolo di avvertimento. È possibile fare clic sul segno di avvertimento e selezionare "Aggiungi generato la versione di serie UID". Questo calcolerà un serialVersionUID per voi e inserirlo nel codice.

Quando ho iniziato a testare i miei fagioli mi sembrava che la serialVersionUID è stato rigenerato quando la classe era compilato , non solo quando la sua firma è cambiato. La ragione di ciò potrebbe essere la costruzione Maven e il fatto che la vecchia classe è stata eliminata prima che la nuova build.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top