5

ここに私のクラスがあるとします:

class B implements Serializable {

    private static final long serialVersionUID = -5186261241138469827L; // what algo is used to generate this
     ..........
}

eclipse が生成するために使用するアルゴリズムは何serialVersionUID = -5186261241138469827Lですか?

4

2 に答える 2

2

Eclipse は、関連する Java 仕様を実装してシリアライゼーション ID を計算します。

Eclipse では、これはorg.eclipse.jdt.internal.ui.text.correction.SerialVersionHashOperationクラスのcalculateSerialVersionIdメソッドによって実装されます。

于 2013-09-30T08:56:48.720 に答える
2

そのアルゴを考えると、Java Object Serialization Specification Docs

ハッシュ値は、SHA-1 メッセージ ダイジェストの最初と 2 番目の 32 ビット値から組み立てられます。メッセージ ダイジェストの結果である 5 つの 32 ビット ワード H0 H1 H2 H3 H4 が sha という名前の 5 つの int 値の配列にある場合、ハッシュ値は次のように計算されます。

  long hash = ((sha[0] >>> 24) & 0xFF) |
              ((sha[0] >>> 16) & 0xFF) << 8 |
              ((sha[0] >>> 8) & 0xFF) << 16 |
              ((sha[0] >>> 0) & 0xFF) << 24 |
              ((sha[1] >>> 24) & 0xFF) << 32 |
              ((sha[1] >>> 16) & 0xFF) << 40 |
              ((sha[1] >>> 8) & 0xFF) << 48 |
              ((sha[1] >>> 0) & 0xFF) << 56;
于 2013-09-30T07:41:25.793 に答える