クラスClassValue<T>
java.lang.Object
java.lang.ClassValue<T>
- 型パラメータ:
T- 関連付けられた値のタイプ
public abstract class ClassValue<T> extends Object
計算された値を任意の
Classオブジェクトに遅延に関連付けます。 たとえば動的言語は、メッセージ送信コール・サイトで検出されたクラスごとにメッセージ・ディスパッチ表を構築する必要がある場合に、メッセージ送信をすばやく実行するために必要な情報を、検出されたクラスごとにClassValueを使ってキャッシュ内に格納できます。
ClassValueの基本的な操作はgetで、computeValueへの呼出しによって最初に作成された、関連付けられた値を返します。複数の呼出しは競合時に発生する可能性がありますが、1つの値がClassに関連付けられて返されます。
もう1つの操作はremoveで、関連付けられた値(存在する場合)がクリアされ、次の関連する値が、削除によって最新の入力状態で計算されるようになります。
特定の関連付けでは、関連する値へのアクセス順序が合計されます。 アクセスはアトミックです。次のものが含まれます。
getによる読取り専用アクセスgetによるcomputeValueの戻り値の関連付けの試行removeによるアソシエーションのクリア
getコールには常に少なくとも1つのアクセスが含まれます。removeコールには常に1つのアクセスがあり、computeValueコールは常に2つのアクセスの間に発生します。 これにより、removeコールに関するcomputeValueコールの順序が確立され、computeValueの結果を getによって正常に関連付けることができるかどうかが決定されます。 - 導入されたバージョン:
- 1.7
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
-
コンストラクタの詳細
-
ClassValue
protected ClassValue()唯一のコンストラクタです。 (サブクラスのコンストラクタによる呼出し用で、通常は暗黙的に呼び出されます。)
-
-
メソッドの詳細
-
computeValue
指定されたClassに関連付ける値を計算します。このメソッドは、
getによる初期読取り専用アクセスで関連付けられた値が見つからない場合に起動されます。このメソッドが例外をスローした場合、開始する
getコールは値の関連付けを試行せず、関連する値が存在する場合はその値を返すか、それ以外の場合はその例外を伝播することで終了することがあります。それ以外の場合は、値が計算されて返されます。 戻り値を関連付けようとすると、次のいずれかの結果が発生します。
- APIのノート:
computeValueコールは、クラス・ロードまたはその他の状況のために、同じtypeに対してgetまたはremoveを再帰的にコールする場合があります。 再帰的getは、再帰が停止した場合、正常に終了し、この開始getは、関連する再帰からの値を監視します。 再帰的removeはno-opです。同じスレッド上にあるため、removeはこのcomputeValueの終了前にすでに発生しています。このcomputeValueの結果は引き続き関連付けることができます。- パラメータ:
type- 値を関連付けるClass- 戻り値:
- 関連付ける新しく計算された値
- 関連項目:
-
get
指定されたClassに関連付けられた値を返します。このメソッドは、最初に読取り専用アクセスを実行し、関連する値が存在する場合はその値を返します。 それ以外の場合、このメソッドは、
computeValue呼出しから、競合するスレッドによって関連付けられる可能性のある関連値が存在するまで、値を関連付けようとします。このメソッドは、
computeValue呼出しから例外をスローすることがあります。 この場合、関連付けは行われません。- パラメータ:
type- 関連する値を取得するClass- 戻り値:
- 指定された
Classに関連付けられた値 - スロー:
NullPointerException- 引数がnullの場合- 関連項目:
-
remove
public void remove(Class<?> type) 指定されたClassの関連値を削除し、すべての古い計算を無効にします。 この関連付けが後でアクセスされる場合、この削除は、関連付けられた値を返したcomputeValueコールの終了(JLS 17.4.5)の前に行われます。- パラメータ:
type- クラス値を削除する必要のある型- スロー:
NullPointerException- 引数がnullの場合
-