Linguaggio

CallSite Classe

Definizione

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .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
Ereditarietà
Derivato
Attributi

Commenti

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target Un'istruzione invokedynamic collegata a un CallSite delegato tutte le chiamate alla destinazione corrente del sito. Un CallSite può essere associato a diverse invokedynamic istruzioni oppure può essere "mobile libero", associato a nessuno. In ogni caso, può essere richiamato tramite un handle di metodo associato denominato #dynamicInvoker invoker dinamico.

CallSite è una classe astratta che non consente la sottoclasse diretta da parte degli utenti. Dispone di tre sottoclassi concrete immediate che possono essere create un'istanza o sottoclassate. <ul><li>Se non è necessaria una destinazione modificabile, un'istruzione invokedynamic può essere associata in modo permanente tramite un sito di chiamata costante ConstantCallSite. <li>Se è necessaria una destinazione modificabile con semantica variabile volatile, poiché gli aggiornamenti alla destinazione devono essere immediatamente e affidabilmente testimoniati da altri thread, è possibile usare un sito di chiamata volatile VolatileCallSite. <li>Altrimenti, se è necessaria una destinazione modificabile, è possibile usare un sito di chiamata modificabile MutableCallSite. </ul>

Un sito di chiamata non costante può essere <>ricollegato</em> modificandone la destinazione. La nuova destinazione deve avere lo stesso tipo MethodHandle#type() della destinazione precedente. Pertanto, anche se un sito di chiamata può essere ricollegato a una serie di destinazioni successive, non può modificarne il tipo.

Di seguito è riportato un esempio di utilizzo di siti di chiamata e metodi bootstrap che collega ogni sito di chiamata dinamico per stampare i relativi argomenti: <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>

Documentazione java per java.lang.invoke.CallSite.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Costruttori

Nome Descrizione
CallSite(IntPtr, JniHandleOwnership)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniManagedPeerState

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
JniPeerMembers

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
Target

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

ThresholdClass

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

ThresholdType

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

Metodi

Nome Descrizione
Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
DisposeUnlessReferenced()

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
DynamicInvoker()

Produce un handle di metodo equivalente a un'istruzione invokedynamic collegata a questo sito di chiamata.

Equals(Object)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto.

(Ereditato da Object)
Type()

Restituisce il tipo di destinazione del sito di chiamata.

UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

(Ereditato da JavaObject)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Un CallSite oggetto è un titolare per una variabile MethodHandle, denominata .target

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a