java.lang.Object
jdk.dynalink.SecureLookupSupplier
jdk.dynalink.CallSiteDescriptor
public class CallSiteDescriptor extends SecureLookupSupplier
コール・サイト記述子には、コール・サイトのリンクに必要なすべての情報が含まれます。 この情報は通常、ブートストラップ・メソッドへのパラメータとして渡され、コール・サイトが発生するコール元クラスの
MethodHandles.Lookup
オブジェクト、コール・サイトでの動的操作およびコール・サイトのメソッド・タイプで構成されます。 CallSiteDescriptor
オブジェクトはDynalinkで使用され、DynamicLinker
が後で使用するためにこれらのパラメータを取得して保存します。
組込みのRelinkableCallSite
実装のコンストラクタはすべて、コール・サイト記述子を取ります。
コール・サイト記述子は不変である必要があります。 このクラスをそのまま使用することも、特に記述子にさらに情報を追加する必要がある場合(通常は、追加パラメータでブートストラップ・メソッドに渡される値)にサブクラス化することもできます。 記述子は不変である必要があるため、呼び出しサイトがそれらを共有するように、同等の記述子のキャッシュを設定できます。
クラスは、SecureLookupSupplier
を拡張して、そのクラスが実行するMethodHandles.Lookup
オブジェクトへのセキュリティ・チェックされたアクセスを行います。 このルックアップは、この記述子によって記述されたコール・サイトのターゲットとして設定するメソッド・ハンドルを検索するために使用する必要があります。
- 導入されたバージョン:
- 9
-
フィールドのサマリー
クラスjdk.dynalink.SecureLookupSupplierで宣言されたフィールド
GET_LOOKUP_PERMISSION_NAME
-
コンストラクタのサマリー
コンストラクタ説明CallSiteDescriptor
(MethodHandles.Lookup lookup, Operation operation, MethodType methodType) 新しいコール・サイト記述子を作成します。 -
メソッドのサマリー
修飾子と型メソッド説明final CallSiteDescriptor
changeMethodType
(MethodType newMethodType) メソッド・タイプとこの記述子のみが異なるコール・サイト記述子を検索または作成します。protected CallSiteDescriptor
changeMethodTypeInternal
(MethodType newMethodType) メソッド・タイプとこの記述子のみが異なるコール・サイト記述子を検索または作成します。final CallSiteDescriptor
changeOperation
(Operation newOperation) この記述子と操作のみが異なるコール・サイト記述子を検索または作成します。protected CallSiteDescriptor
changeOperationInternal
(Operation newOperation) この記述子と操作のみが異なるコール・サイト記述子を検索または作成します。boolean
このコール・サイト記述子が渡されたオブジェクトと等しい場合はtrueを返します。final MethodType
コール・サイトのメソッドのタイプ。final Operation
コール・サイトで操作を返します。int
hashCode()
操作、メソッド・タイプおよびルックアップ・オブジェクトのルックアップ・クラスおよびルックアップ・モードから計算された、このコール・サイト記述子の値ベースのハッシュ・コードを返します。toString()
name(parameterTypes)returnType@lookup
という形式の、このコール・サイト記述子の文字列表現を返します。クラスjdk.dynalink.SecureLookupSupplierで宣言されたメソッド
getLookup, getLookupPrivileged
-
コンストラクタの詳細
-
CallSiteDescriptor
public CallSiteDescriptor(MethodHandles.Lookup lookup, Operation operation, MethodType methodType) 新しいコール・サイト記述子を作成します。- パラメータ:
lookup
- コール・サイトが属するクラスを記述するルックアップ・オブジェクト。java.lang.invoke
ブートストラップ・メソッドから記述子を作成する場合、その記述子はブートストラップに渡されるルックアップである必要があります。operation
- コール・サイトでの動的操作。methodType
- コール・サイトのメソッド・タイプ。java.lang.invoke
ブートストラップ・メソッドから記述子を作成する場合、その記述子はブートストラップに渡されるメソッド・タイプである必要があります。
-
-
メソッドの詳細
-
getOperation
-
getMethodType
-
changeMethodType
public final CallSiteDescriptor changeMethodType(MethodType newMethodType) メソッド・タイプとこの記述子のみが異なるコール・サイト記述子を検索または作成します。changeMethodTypeInternal(MethodType)
を呼び出します。- パラメータ:
newMethodType
- 新しいメソッド型- 戻り値:
- メソッド・タイプが変更されたコール・サイト記述子。
- 例外:
NullPointerException
-newMethodType
がNULLの場合。
-
changeMethodTypeInternal
protected CallSiteDescriptor changeMethodTypeInternal(MethodType newMethodType) メソッド・タイプとこの記述子のみが異なるコール・サイト記述子を検索または作成します。 サブクラスは、その正確なクラスのオブジェクトを返すため、このメソッドをオーバーライドする必要があります。 オーバーライドされたメソッドが記述子(クラス、ルックアップまたは操作)内のメソッド型以外を変更するか、nullを返す場合、AssertionError
はchangeMethodType(MethodType)
からスローされます。- パラメータ:
newMethodType
- 新しいメソッド型- 戻り値:
- 変更されたメソッド・タイプを持つコール・サイト記述子。
-
changeOperation
public final CallSiteDescriptor changeOperation(Operation newOperation) この記述子と操作のみが異なるコール・サイト記述子を検索または作成します。changeOperationInternal(Operation)
を呼び出します。- パラメータ:
newOperation
- 新しい操作- 戻り値:
- 変更された操作を含むコール・サイト記述子。
- 例外:
NullPointerException
-newOperation
がNULLの場合。SecurityException
- 記述子のルックアップがMethodHandles.publicLookup()
ではなく、セキュリティ・マネージャが存在し、RuntimePermission("dynalink.getLookup")
のチェックが失敗した場合。 これは、呼び出しサイト記述子内の操作を変更することで、ルックアップを使用して任意の操作に対して記述子を作成できるので必要です。
-
changeOperationInternal
protected CallSiteDescriptor changeOperationInternal(Operation newOperation) この記述子と操作のみが異なるコール・サイト記述子を検索または作成します。 サブクラスは、その正確なクラスのオブジェクトを返すため、このメソッドをオーバーライドする必要があります。 オーバーライドされたメソッドが記述子(クラス、ルックアップまたはメソッド・タイプ)の操作以外を変更するか、nullを返す場合、changeOperation(Operation)
からAssertionError
がスローされます。- パラメータ:
newOperation
- 新しい操作- 戻り値:
- 変更された操作を含むコール・サイト記述子。
-
equals
public boolean equals(Object obj) このコール・サイト記述子が渡されたオブジェクトと等しい場合はtrueを返します。 他のオブジェクトがまったく同じクラスで、それらの操作とメソッド・タイプが等しく、それらのルックアップのMethodHandles.Lookup.lookupClass()
とMethodHandles.Lookup.lookupModes()
が同じである場合、同じとみなされます。 -
hashCode
-
toString
-