Language

CallSite クラス

定義

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

[Android.Runtime.Register("java/lang/invoke/CallSite", ApiSince=26, DoNotGenerateAcw=true)]
public abstract class CallSite : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/CallSite", ApiSince=26, DoNotGenerateAcw=true)>]
type CallSite = class
    inherit Object
継承
派生
属性

注釈

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。 invokedynamicにリンクされているCallSite命令は、サイトの現在のターゲットへのすべての呼び出しを委任します。 CallSiteは、複数のinvokedynamic命令に関連付けられているか、"フリー フローティング" で、何も関連付けられていない場合があります。 いずれの場合も、#dynamicInvoker 動的呼び出し子と呼ばれる関連付けられたメソッド ハンドルを介して呼び出すことができます。

CallSite は、ユーザーによる直接サブクラス化を許可しない抽象クラスです。 これには、インスタンス化またはサブクラス化できる 3 つの即時の具象サブクラスがあります。 <ul><li>変更可能なターゲットが不要な場合は、ConstantCallSite 定数呼び出しサイトを使用して、 invokedynamic 命令を永続的にバインドできます。 <li>揮発性変数セマンティクスを持つ変更可能なターゲットが必要な場合は、ターゲットの更新を他のスレッドによって直ちに確実に監視する必要があるため、VolatileCallSite 揮発性呼び出しサイトを使用できます。 <li>変更可能なターゲットが必要な場合は、MutableCallSite の変更可能な呼び出しサイトを使用できます。 </ul>

非定数呼び出しサイトは、ターゲットを変更することによって <em>relinked</em> できます。 新しいターゲットには、前のターゲットと同じ MethodHandle#type() 型が必要です。 したがって、呼び出しサイトは連続する一連のターゲットに再リンクできますが、その種類を変更することはできません。

呼び出しサイトとブートストラップ メソッドの使用例を次に示します。各動的呼び出しサイトをリンクしてその引数を出力します。 <blockquote>

{@code
            static void test() throws Throwable {
                // THE FOLLOWING LINE IS PSEUDOCODE FOR A JVM INSTRUCTION
                InvokeDynamic[#bootstrapDynamic].baz("baz arg", 2, 3.14);
            }
            private static void printArgs(Object... args) {
              System.out.println(java.util.Arrays.deepToString(args));
            }
            private static final MethodHandle printArgs;
            static {
              MethodHandles.Lookup lookup = MethodHandles.lookup();
              Class thisClass = lookup.lookupClass();  // (who am I?)
              printArgs = lookup.findStatic(thisClass,
                  "printArgs", MethodType.methodType(void.class, Object[].class));
            }
            private static CallSite bootstrapDynamic(MethodHandles.Lookup caller, String name, MethodType type) {
              // ignore caller and name, but match the type:
              return new ConstantCallSite(printArgs.asType(type));
            }
            }

</blockquote>

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

Name 説明
CallSite(IntPtr, JniHandleOwnership)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

プロパティ

Name 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
JniPeerMembers

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
Target

この呼び出しサイトの特定のクラスで定義されている動作に従って、呼び出しサイトのターゲット メソッドを返します。

ThresholdClass

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

ThresholdType

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

メソッド

Name 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
DynamicInvoker()

この呼び出しサイトにリンクされている invokedynamic 命令と同等のメソッド ハンドルを生成します。

Equals(Object)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
Type()

この呼び出しサイトのターゲットの種類を返します。

UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

Name 説明
IJavaPeerable.Disposed()

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
IJavaPeerable.Finalized()

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

(継承元 JavaObject)

拡張メソッド

Name 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

CallSiteは変数MethodHandleのホルダーであり、そのtargetと呼ばれます。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象