メソッドを追加すると、クラスのJavaが計算されたSerialVersionUidが変更されますか?

StackOverflow https://stackoverflow.com/questions/998925

質問

このようなクラスがある場合:

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

別のメソッド(および追加のフィールドがない)を追加すると、計算されたシリアルバージョンが変更されますか?

たとえば、メソッドの追加:

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

または、これを理解するための素晴らしいツールはありますか?

役に立ちましたか?

解決

はい、それは変わります serialVersionUID.

使用できます serialver コマンドラインツール - 少なくとも太陽のJDKでは、 serialVersionUID 特定のコンパイルされたクラスの場合。

他のヒント

はい、それは変わります。簡単な方法はEclipseです。クラスがシリアル化可能であり、シリアルバージョンのフィールドを提供しない場合、IDEは警告記号を表示します。警告サインをクリックして、「生成されたシリアルバージョンUIDを追加」を選択できます。これにより、SerialVersionUidが計算され、コードに挿入されます。

私が豆のテストを開始したとき、クラスがあったときにシリアルヴェルシオン液が再生されたように思えました 編集済み, 、その署名が変更されたときだけではありません。その理由は、Mavenビルドと、新しいビルドの前に古いクラスが削除されたという事実である可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top