直列化とwriteReplace/readResolveメソッド

概説

この例題ではwriteReplace/readResolveメソッドの使い方を示します。 readResolveメソッドは、ストリームから読み取られたオブジェクトが呼出し元に返される前に、解釈処理を行います。 writeReplaceメソッドを使用すると、オブジェクトの書込みが行われる前に、そのオブジェクトのSerializableクラスがストリーム内での自らの置換えを指定できます。

この例題では、各シンボル・バインディングにインスタンスが1つだけ存在するシンボル・クラスを生成します。 SymbolクラスはreadResolveメソッドを定義します。 symbollookupメソッドを使用して、外部から1つのシンボルが生成されます。 symbollookupメソッドは、シンボルがすでに存在する場合はそのシンボルを検出して返し、シンボルが存在しない場合はシンボルを生成します。 これにより、1つのVM内でシンボルの一意性が保証されます。 次に、シンボルを読み出すためにreadResolveメソッドが呼び出されると、ハッシュ表に等価なシンボル・オブジェクトがすでにある場合は、一意性の制約を守るために既存のオブジェクトで代用されます。 シンボルがない場合は、新しいシンボルがハッシュ表に追加されてから返されます。 これにより、複数のVMを扱うときの一意性が保証されます。

青色のバー

関連情報


Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved.