モジュール jdk.dynalink
パッケージ jdk.dynalink

クラスCallSiteDescriptor


  • public class CallSiteDescriptor
    extends SecureLookupSupplier
    コールサイト記述子には、コールサイトのリンクに必要なすべての情報が含まれます。 この情報は、通常、ブートストラップ・メソッドにパラメータとして渡され、コール・サイトが発生するコール元クラス上のMethodHandles.Lookupオブジェクト、コール・サイトでの動的操作およびコール・サイトのメソッド・タイプで構成されます。 CallSiteDescriptorオブジェクトは、DynamicLinkerで後で使用するために、これらのパラメータを取得および格納するためにDynalinkで使用されます。

    組込みRelinkableCallSite実装のコンストラクタはすべて、コール・サイト記述子を取ります。

    コールサイト記述子は不変である必要があります。 このクラスをそのまま使用することも、サブクラス化することもできます。特に、記述子にさらに情報を追加する必要がある場合(通常は、ブートストラップ・メソッドに追加パラメータで渡される値)です。 ディスクリプタは不変である必要があるため、同等のディスクリプタに対してキャッシュを設定して、コール・サイトがそれらを共有するようにできます。

    このクラスは、SecureLookupSupplierを拡張して、保持するMethodHandles.Lookupオブジェクトへのセキュリティ・チェック・アクセスを行います。 この参照は、この記述子によって記述されたコール・サイトのターゲットとして設定するメソッド・ハンドルを検索するために使用する必要があります。

    • コンストラクタの詳細

      • 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を返す場合、AssertionErrorchangeMethodType(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を返す場合、AssertionErrorchangeOperation(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)
      • toString

        public String toString()
        このコール・サイト記述子の文字列表現をname(parameterTypes)returnType@lookupの形式で返します。
        オーバーライド:
        toString、クラスObject
        戻り値:
        このオブジェクトの文字列表現