Share via


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
衍生
屬性

備註

CallSite是變數 MethodHandle 的持有者,稱為其 targetinvokedynamic連結至 的 CallSite 指令會將所有呼叫委派給月臺的目前目標。 CallSite可能會與數 invokedynamic 個指示相關聯,或可能是與無關聯的「可用浮動」。 在任何情況下,都可以透過稱為其 #dynamicInvoker 動態調用程式的相關方法控制碼來叫用。

CallSite 是不允許使用者直接子類別的抽象類別。 它有三個可具現化或子類別化的立即具象子類別。 <ul >< li > 如果不需要可變動的目標, invokedynamic 指令可能會透過 ConstantCallSite 常數呼叫網站永久系結。 <li > 如果需要具有變動性變數語意的可變動目標,因為目標更新必須立即且可靠地由其他執行緒見證,所以可以使用 VolatileCallSite volatile 呼叫網站。 <否則 > ,如果需要可變動的目標,可以使用 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.lang.invoke.CallSite JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

建構函式

CallSite(IntPtr, JniHandleOwnership)

CallSite是變數 MethodHandle 的持有者,稱為其 target

屬性

Class

傳回這個 Object 的執行時間類別。

(繼承來源 Object)
Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
JniIdentityHashCode

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
JniPeerMembers

CallSite是變數 MethodHandle 的持有者,稱為其 target

PeerReference

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
Target

CallSite是變數 MethodHandle 的持有者,稱為其 target

ThresholdClass

CallSite是變數 MethodHandle 的持有者,稱為其 target

ThresholdType

CallSite是變數 MethodHandle 的持有者,稱為其 target

方法

Clone()

建立並傳回這個 物件的複本。

(繼承來源 Object)
Dispose()

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
Dispose(Boolean)

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
DynamicInvoker()

產生相當於已連結至此呼叫月臺之 invokedynamic 指令的方法控制碼。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()

當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
ToArray<T>()

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
Type()

傳回此呼叫月臺目標的類型。

UnregisterFromRuntime()

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
Wait()

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > 。 ><

(繼承來源 Object)
Wait(Int64)

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <>

(繼承來源 Object)

明確介面實作

IJavaPeerable.Disposed()

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
IJavaPeerable.Finalized()

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

CallSite是變數 MethodHandle 的持有者,稱為其 target

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

CallSite是變數 MethodHandle 的持有者,稱為其 target

GetJniTypeName(IJavaPeerable)

CallSite是變數 MethodHandle 的持有者,稱為其 target

適用於