java.lang.Object
jdk.dynalink.SecureLookupSupplier
jdk.dynalink.CallSiteDescriptor
public class CallSiteDescriptor extends SecureLookupSupplier
コール・サイト記述子には、コール・サイトのリンクに必要なすべての情報が含まれています。 この情報は通常、ブートストラップ・メソッドのパラメータとして渡され、コール・サイトが発生するコール元クラスの
MethodHandles.Lookup
オブジェクト、コール・サイトの動的操作、コール・サイトのメソッド型で構成されます。 CallSiteDescriptor
オブジェクトはDynalinkで使用され、DynamicLinker
が後で使用するためにこれらのパラメータを取得して保存します。
組み込みのRelinkableCallSite
実装のコンストラクタはすべて呼び出しサイト記述子を取ります。
コール・サイト記述子は不変でなければなりません。 このクラスをそのまま使用することも、サブクラス化することもできます。特に、記述子に情報を追加する必要がある場合(通常、ブートストラップ・メソッドの追加パラメータで渡される値)。 記述子は不変でなければならないので、コール・サイトがそれらを共有するように、同等の記述子のキャッシュを設定することができます。
このクラスは、MethodHandles.Lookup
オブジェクトへのセキュリティでチェックされたアクセスのためにSecureLookupSupplier
を拡張します。 このルックアップを使用して、この記述子によって記述されたコール・サイトのターゲットとして設定するメソッド・ハンドルを見つける必要があります。
-
フィールドのサマリー
クラス 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
public final Operation getOperation()呼び出しサイトでの操作を返します。- 戻り値:
- コール・サイトでの操作。
-
getMethodType
public final MethodType 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を返す場合、AssertionError
がchangeOperation(Operation)
からスローされます。- パラメータ:
newOperation
- 新しい操作- 戻り値:
- 変更された操作を伴うコール・サイト記述子。
-
equals
public boolean equals(Object obj) この呼び出しサイト記述子が渡されたオブジェクトと等しい場合はtrueを返します。 他のオブジェクトがまったく同じクラスで、その操作とメソッドの型が等しく、ルックアップが同じMethodHandles.Lookup.lookupClass()
とMethodHandles.Lookup.lookupModes()
を持つ場合、これは等しいとみなされます。 -
hashCode
public int hashCode()オペレーション、メソッド型、およびルックアップ・オブジェクトのルックアップ・クラスとルックアップ・モードから計算された、このコール・サイト記述子の値ベースのハッシュ・コードを返します。 -
toString
public String toString()name(parameterTypes)returnType@lookup
の形式のこの呼び出しサイト記述子の文字列表現を返します。
-