CallSite Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Un CallSite
è 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
è 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 qualsiasi 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. Ha tre sottoclassi concrete immediate che possono essere create istanza o sottoclassi. <ul><li>Se non è necessaria una destinazione modificabile, invokedynamic
un'istruzione può essere associata definitivamente tramite un sito di chiamata costante ConstantCallSite. <li>Se è necessaria una destinazione modificabile con semantica variabile volatile, perché gli aggiornamenti alla destinazione devono essere immediatamente e in modo affidabile testimoniati da altri thread, può essere usato un sito di chiamata volatile VolatileCallSite. <li>Altrimenti, se è necessaria una destinazione modificabile, può essere usato un sito di chiamata modificabile MutableCallSite. </ul>
Un sito di chiamata non costante può essere <rilinkato></em> modificando la destinazione. La nuova destinazione deve avere lo stesso tipo MethodHandle#type() della destinazione precedente. Pertanto, anche se un sito di chiamata può essere rilinkato a una serie di destinazioni successive, non può modificare il relativo tipo.
Ecco un esempio di uso dei siti di chiamata e dei metodi bootstrap che collega ogni sito di chiamata dinamica 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 in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .
Costruttori
CallSite(IntPtr, JniHandleOwnership) |
Un |
Proprietà
Class |
Restituisce la classe di runtime di questo |
Handle |
Handle all'istanza di Android sottostante. (Ereditato da Object) |
JniIdentityHashCode |
Un |
JniPeerMembers |
Un |
PeerReference |
Un |
Target |
Un |
ThresholdClass |
Un |
ThresholdType |
Un |
Metodi
Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
Dispose() |
Un |
Dispose(Boolean) |
Un |
DynamicInvoker() |
Produce un handle di metodo equivalente a un'istruzione invokedynamic collegata a questo sito di chiamata. |
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 in un oggetto quando Garbage Collection determina che non sono presenti più riferimenti all'oggetto. (Ereditato da Object) |
Notify() |
Riattiva un singolo thread in attesa del monitoraggio dell'oggetto. (Ereditato da Object) |
NotifyAll() |
Riattiva tutti i thread in attesa del monitoraggio dell'oggetto. (Ereditato da Object) |
SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
ToArray<T>() |
Un |
ToString() |
Restituisce una rappresentazione in formato stringa dell'oggetto. (Ereditato da Object) |
Type() |
Restituisce il tipo di destinazione del sito di chiamata. |
UnregisterFromRuntime() |
Un |
Wait() |
Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere eseguendo>una notifica</em o <em interrotto</>em>>.< (Ereditato da Object) |
Wait(Int64) |
Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale. (Ereditato da Object) |
Wait(Int64, Int32) |
Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo 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
IJavaPeerable.Disposed() |
Un |
IJavaPeerable.DisposeUnlessReferenced() |
Un |
IJavaPeerable.Finalized() |
Un |
IJavaPeerable.JniManagedPeerState |
Un |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Un |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Un |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Un |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione dei tipi controllati dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Un |
GetJniTypeName(IJavaPeerable) |
Un |