1

serialVersionUID を定義していない場合、誰かが教えてくれる serialVersionUID について混乱しています。これはパフォーマンスに影響を与えるため、これについての知識を結論付ける必要があります。

私の理解では、Javaコンパイラでは、2つのクラス間で通信する必要がある場合、または1つのタスク間でオブジェクト通信を使用する必要がある場合。送信者がオブジェクトを送信するときに、送信者と受信者で serialVersionUID を生成する必要があります オブジェクトに serialVersionUID を入れ、受信したオブジェクトが正しいかどうかを検証し、受信者が正しい場合はプロセスを続行し、そうでない場合は例外をスローします

したがって、serialVersionUID を配置していない場合、Java コンパイラは私の理解から実行時にそれを定義するので、Java が実行されたときのパフォーマンスに影響はないと思います

私の理解が正しいことを願っています そうでない場合は、このサイトの別の人が提案するのを手伝ってください

ありがとうございました

4

3 に答える 3

4

そのような詳細に対する答えは、常に仕様に記載されています。

シリアライズ可能なクラスが serialVersionUID を明示的に宣言しない場合、シリアライゼーション ランタイムは、Java(TM) オブジェクト シリアライゼーション仕様で説明されているように、クラスのさまざまな側面に基づいて、そのクラスのデフォルトの serialVersionUID 値を計算します。

詳細については、java.io.Serializable を参照してください。

答えはそうなるでしょうが、本当の質問はどれくらいですか?

この質問に対する答えは、この記事Into the mise of serialization myths にあります。

結論として、影響はそれほど重要ではありませんが、コード管理のコストは高くなる可能性があります。このタイプの質問に対する最終的な回答は、プロジェクトの規模とアプリケーションが動作する環境によって異なります。

于 2013-04-02T10:37:22.857 に答える