- java.lang.Object
-
- jdk.dynalink.SecureLookupSupplier
-
- jdk.dynalink.CallSiteDescriptor
-
public class CallSiteDescriptor extends SecureLookupSupplier
コールサイト記述子には、コールサイトのリンクに必要なすべての情報が含まれます。 この情報は、通常、ブートストラップ・メソッドにパラメータとして渡され、コール・サイトが発生するコール元クラス上のMethodHandles.Lookupオブジェクト、コール・サイトでの動的操作およびコール・サイトのメソッド・タイプで構成されます。CallSiteDescriptorオブジェクトは、DynamicLinkerで後で使用するために、これらのパラメータを取得および格納するためにDynalinkで使用されます。組込み
RelinkableCallSite実装のコンストラクタはすべて、コール・サイト記述子を取ります。コールサイト記述子は不変である必要があります。 このクラスをそのまま使用することも、サブクラス化することもできます。特に、記述子にさらに情報を追加する必要がある場合(通常は、ブートストラップ・メソッドに追加パラメータで渡される値)です。 ディスクリプタは不変である必要があるため、同等のディスクリプタに対してキャッシュを設定して、コール・サイトがそれらを共有するようにできます。
このクラスは、
SecureLookupSupplierを拡張して、保持するMethodHandles.Lookupオブジェクトへのセキュリティ・チェック・アクセスを行います。 この参照は、この記述子によって記述されたコール・サイトのターゲットとして設定するメソッド・ハンドルを検索するために使用する必要があります。
-
-
フィールドのサマリー
-
クラスjdk.dynalinkで宣言されるフィールド。SecureLookupSupplier
GET_LOOKUP_PERMISSION_NAME
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 CallSiteDescriptor(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)新しいコール・サイト記述子を作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 CallSiteDescriptorchangeMethodType(MethodType newMethodType)メソッド・タイプとこのディスクリプタのみが異なるコール・サイト・ディスクリプタを検索または作成します。protected CallSiteDescriptorchangeMethodTypeInternal(MethodType newMethodType)メソッド・タイプとこのディスクリプタのみが異なるコール・サイト・ディスクリプタを検索または作成します。CallSiteDescriptorchangeOperation(Operation newOperation)この記述子と操作でのみ異なるコールサイト記述子を検索または作成します。protected CallSiteDescriptorchangeOperationInternal(Operation newOperation)この記述子と操作でのみ異なるコールサイト記述子を検索または作成します。booleanequals(Object obj)このコール・サイト記述子が渡されたオブジェクトと等しい場合、trueを返します。MethodTypegetMethodType()コール・サイトのメソッドのタイプ。OperationgetOperation()コール・サイトでの操作を返します。inthashCode()操作、メソッド・タイプおよびルックアップ・オブジェクトのルックアップ・クラスおよびルックアップ・モードから計算された、このコール・サイト記述子の値ベースのハッシュ・コードを返します。StringtoString()このコール・サイト記述子の文字列表現を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()が同じ場合、同じとみなされます。- オーバーライド:
equals、クラスObject- パラメータ:
obj- 比較対象の参照オブジェクト。- 戻り値:
- このオブジェクトがobj引数と同じである場合は
true、それ以外の場合はfalse。 - 関連項目:
Object.hashCode()、HashMap
-
hashCode
public int hashCode()
操作、メソッド・タイプおよびルックアップ・オブジェクトのルックアップ・クラスおよびルックアップ・モードから計算された、このコール・サイト記述子の値ベースのハッシュ・コードを返します。- オーバーライド:
hashCode、クラスObject- 戻り値:
- このコール・サイト記述子の値ベースのハッシュ・コード。
- 関連項目:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
-