Frage

Wenn ich eine solche Klasse habe:

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

Wird sich seine berechnete Serialversionuid ändern, wenn ich eine andere Methode hinzufüge (und keine zusätzlichen Felder)?

Zum Beispiel Hinzufügen der Methode:

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

Gibt es alternativ ein schönes Werkzeug, um dies herauszufinden?

War es hilfreich?

Lösung

Ja, es wird das ändern serialVersionUID.

Du kannst den ... benutzen serialver Befehlszeilenwerkzeug - zumindest in Suns JDK, um die zu berechnen serialVersionUID Für eine bestimmte kompilierte Klasse.

Andere Tipps

Ja, es wird sich ändern. Ein einfacher Weg ist Eclipse: Wenn die Klasse serialisierbar implementiert und Sie kein serialversionuides Feld bereitstellen, zeigt die IDE ein Warnsymbol an. Sie können auf das Warnzeichen klicken und "generierte serielle Versions -UID hinzufügen" auswählen. Dadurch wird ein Serialversionuid für Sie berechnet und in Ihren Code einfügt.

Als ich anfing, meine Bohnen zu testen, schien es mir, dass die Serialversionuid regeneriert wurde, als die Klasse war zusammengestellt, nicht nur, wenn sich seine Signatur änderte. Der Grund dafür könnte der Maven -Build und die Tatsache, dass die alte Klasse vor dem Neubau gelöscht wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top