13

編集:ランダムとは、開発者としての私たちにとって意味的な意味のない大きな計算された数を意味します

Serializable インターフェイスを実装する場合、シリアル バージョンの UID を指定することがベスト プラクティスであり、非常に重要です。多くの場所で、乱数が使用されているのをよく見かけます。例えば

有効な Java (第 2 版) pg 312:

private static final long serialVersionUID = 234098243823485285L;

Java 6 の String クラスから:

private static final long serialVersionUID = -6849794470754667710L;

Java 6 の ArrayList クラスから:

private static final long serialVersionUID = 8683452581122892189L;

eclipse でさえ、これらの乱数を生成するオプションを提供しています (ただし、主要なデフォルトでは、serialVersionUID を生成するように見えます1L) 。

乱数を使用する理由 賢明なリビジョン管理のように、1L から開始し、変更されたときに 2L にインクリメントする方が理にかなっていませんか? 一見乱数を使用することを考えることができるのは、最初に serialVersionUID を指定せず、今すぐ指定したい場合です (これにより、実行時に自動生成されたバージョンに結び付けられ、下位互換性サポートが提供されます)。

4

2 に答える 2

12

これらの「乱数」は、おそらくJava ObjectSerializationSpecificationに従って「現在の」形式でクラスに対して自動的に生成され番号です...ここで「current」は「最初に宣言された時点での現在」です。serialVersionUID

これにより、以前にシリアル化されていたデータを引き続き逆シリアル化することができますが、将来的には重大な変更のより明示的な宣言に進むことができます。

于 2013-02-20T23:14:16.797 に答える
4

これらはほぼ確実に乱数ではなく、ツールの出力ですserialver

于 2013-02-20T23:17:05.317 に答える