Language

MutableCallSite クラス

定義

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

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

注釈

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。 invokedynamicにリンクされているMutableCallSite命令は、サイトの現在のターゲットへのすべての呼び出しを委任します。 変更可能な呼び出しサイトの CallSite#dynamicInvoker 動的呼び出し側も、各呼び出しをサイトの現在のターゲットに委任します。

メソッド ハンドル チェーンに状態変数を導入する変更可能な呼び出しサイトの例を次に示します。 <-- JavaDocExamplesTest.testMutableCallSite --><blockquote>

{@code
            MutableCallSite name = new MutableCallSite(MethodType.methodType(String.class));
            MethodHandle MH_name = name.dynamicInvoker();
            MethodType MT_str1 = MethodType.methodType(String.class);
            MethodHandle MH_upcase = MethodHandles.lookup()
                .findVirtual(String.class, "toUpperCase", MT_str1);
            MethodHandle worker1 = MethodHandles.filterReturnValue(MH_name, MH_upcase);
            name.setTarget(MethodHandles.constant(String.class, "Rocky"));
            assertEquals("ROCKY", (String) worker1.invokeExact());
            name.setTarget(MethodHandles.constant(String.class, "Fred"));
            assertEquals("FRED", (String) worker1.invokeExact());
            // (mutation can be continued indefinitely)
            }

</blockquote>

同じ呼び出しサイトを一度に複数の場所で使用できます。 <blockquote>

{@code
            MethodType MT_str2 = MethodType.methodType(String.class, String.class);
            MethodHandle MH_cat = lookup().findVirtual(String.class,
              "concat", methodType(String.class, String.class));
            MethodHandle MH_dear = MethodHandles.insertArguments(MH_cat, 1, ", dear?");
            MethodHandle worker2 = MethodHandles.filterReturnValue(MH_name, MH_dear);
            assertEquals("Fred, dear?", (String) worker2.invokeExact());
            name.setTarget(MethodHandles.constant(String.class, "Wilma"));
            assertEquals("WILMA", (String) worker1.invokeExact());
            assertEquals("Wilma, dear?", (String) worker2.invokeExact());
            }

</blockquote>

<em>ターゲット値の非同期:</em> 変更可能な呼び出しサイトのターゲットへの書き込みでは、他のスレッドが更新された値を認識するように強制されません。 更新された呼び出しサイトに対して適切な同期アクションを実行しないスレッドは、古いターゲット値をキャッシュし、新しいターゲット値の使用を無期限に遅らせる可能性があります。 (これは、オブジェクト フィールドに適用される Java メモリ モデルの通常の結果です)。

頻繁に更新されるターゲット値の場合は、代わりに VolatileCallSite 揮発性呼び出しサイトの使用を検討してください。

Javaドキュメント。

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

コンストラクター

名前 説明
MutableCallSite(IntPtr, JniHandleOwnership)

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

MutableCallSite(MethodHandle)

初期ターゲット メソッド ハンドルを使用して呼び出しサイト オブジェクトを作成します。

MutableCallSite(MethodType)

指定されたメソッド型を持つ空の呼び出しサイト オブジェクトを作成します。

プロパティ

名前 説明
Class

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

(継承元 Object)
Handle

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

(継承元 Object)
JniIdentityHashCode

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

(継承元 Object)
JniManagedPeerState

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)
JniPeerMembers

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

PeerReference

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

(継承元 Object)
Target

呼び出しサイトのターゲット メソッドを返します。これは、 MutableCallSiteの通常のフィールドと同様に動作します。 または、この呼び出しサイトのターゲット メソッドを通常の変数として更新します。

ThresholdClass

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

ThresholdType

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

メソッド

名前 説明
Clone()

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

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

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)
Dispose()

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

(継承元 Object)
Dispose(Boolean)

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

(継承元 Object)
DisposeUnlessReferenced()

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)
DynamicInvoker()

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

Equals(Object)

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)
Equals(Object)

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

(継承元 Object)
GetHashCode()

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

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

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

(継承元 Object)
Notify()

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

(継承元 Object)
NotifyAll()

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

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

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

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

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

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

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

(継承元 Object)
ToString()

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

(継承元 Object)
Type()

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

(継承元 CallSite)
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)

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

名前 説明
IJavaPeerable.Disposed()

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)
IJavaPeerable.Finalized()

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

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

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

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

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

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

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

MutableCallSiteは、ターゲット変数が通常のフィールドのように動作するCallSiteです。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

適用対象