直列化とwriteReplace/readResolveメソッド

概説

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

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

関連情報

ソース・ファイル
例題の実行
例題リスト

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