Linguaggio

MutableCallSite Classe

Definizione

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

[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
Ereditarietà
MutableCallSite
Attributi

Commenti

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario. Un'istruzione invokedynamic collegata a un MutableCallSite delegato tutte le chiamate alla destinazione corrente del sito. Il chiamante dinamico CallSite#dynamicInvoker di un sito di chiamata modificabile delega anche ogni chiamata alla destinazione corrente del sito.

Di seguito è riportato un esempio di sito di chiamata modificabile che introduce una variabile di stato in una catena di handle del metodo. <-- 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>

Lo stesso sito di chiamata può essere usato in più posizioni contemporaneamente. <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>Non-synchronization of target values:</em> A write to a mutable call site's target does not force other threads to become aware of the updated value. I thread che non eseguono azioni di sincronizzazione appropriate relative al sito di chiamata aggiornato possono memorizzare nella cache il valore di destinazione precedente e ritardare l'uso del nuovo valore di destinazione per un tempo indefinito. Si tratta di una conseguenza normale del modello di memoria Java applicato ai campi oggetto.

Per i valori di destinazione che verranno aggiornati di frequente, prendere in considerazione l'uso di un sito di chiamata volatile VolatileCallSite.

per java.lang.invoke.MutableCallSite.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Costruttori

Nome Descrizione
MutableCallSite(IntPtr, JniHandleOwnership)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

MutableCallSite(MethodHandle)

Crea un oggetto sito di chiamata con un handle del metodo di destinazione iniziale.

MutableCallSite(MethodType)

Crea un oggetto sito di chiamata vuoto con il tipo di metodo specificato.

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

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
JniPeerMembers

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

PeerReference

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

(Ereditato da Object)
Target

Restituisce il metodo di destinazione del sito di chiamata, che si comporta come un campo normale dell'oggetto MutableCallSite. -oppure- Aggiorna il metodo di destinazione di questo sito di chiamata, come variabile normale.

ThresholdClass

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

ThresholdType

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

Metodi

Nome Descrizione
Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(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()

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
DynamicInvoker()

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

Equals(Object)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
Equals(Object)

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

(Ereditato da Object)
GetHashCode()

Restituisce un valore di 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)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(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.

(Ereditato da CallSite)
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()

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

(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)

È MutableCallSite un oggetto la CallSite cui variabile di destinazione si comporta come un campo ordinario.

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

Si applica a