私はObjectOutputStream のドキュメントを読み、シリアライゼーションについて読んでいますが、混乱しています。それは次のように述べています
単一のオブジェクトへの複数の参照は、参照共有メカニズムを使用してエンコードされるため、オブジェクトのグラフを元のオブジェクトが作成されたときと同じ形状に復元できます。
参照共有メカニズムの意味は何ですか? また、次のようにも述べています。
列挙型定数は、通常のシリアライズ可能オブジェクトまたは外部化可能オブジェクトとは異なる方法でシリアライズされます。enum 定数のシリアル化された形式は、その名前だけで構成されます。定数のフィールド値は送信されません。列挙型定数をシリアル化するために、ObjectOutputStream は、定数の名前 method によって返される文字列を書き込みます。他のシリアル化可能オブジェクトまたは外部化可能オブジェクトと同様に、列挙型定数は、シリアル化ストリームに後で現れる後方参照のターゲットとして機能できます。
私が考えることができる理由の 1 つは、Enum フィールドは定数であるため、シリアル化されないことです。では、Enum をシリアル化する必要がある場合、正確にはどうすればよいでしょうか? もう 1 つ、状態をシリアル化できない場合、コンパイラが Enum のシリアル化を制限しないのはなぜですか? 列挙定数が後方参照のターゲットとして機能できるという意味は何ですか?
この疑問を明確にするのを手伝ってください。ありがとう。