Langage

MutableCallSite Classe

Définition

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

[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
Héritage
MutableCallSite
Attributs

Remarques

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire. Instruction invokedynamic liée à un MutableCallSite délégué tous les appels à la cible actuelle du site. L’appelant dynamique CallSite#dynamicInvoker d’un site d’appel mutable délègue également chaque appel à la cible actuelle du site.

Voici un exemple de site d’appel mutable qui introduit une variable d’état dans une chaîne de handle de méthode. <-- 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>

Le même site d’appel peut être utilisé à plusieurs endroits à la fois. <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-synchronisation des valeurs cibles :</em> Une écriture dans la cible d’un site d’appel mutable ne force pas d’autres threads à prendre connaissance de la valeur mise à jour. Les threads qui n’effectuent pas d’actions de synchronisation appropriées par rapport au site d’appel mis à jour peuvent mettre en cache l’ancienne valeur cible et retarder leur utilisation de la nouvelle valeur cible indéfiniment. (Il s’agit d’une conséquence normale du modèle de mémoire Java tel qu’il est appliqué aux champs d’objet.)

Pour les valeurs cibles qui seront fréquemment mises à jour, envisagez d’utiliser un site d’appel volatile VolatileCallSite à la place.

Documentation Java pour java.lang.invoke.MutableCallSite.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Constructeurs

Nom Description
MutableCallSite(IntPtr, JniHandleOwnership)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

MutableCallSite(MethodHandle)

Crée un objet de site d’appel avec un handle de méthode cible initiale.

MutableCallSite(MethodType)

Crée un objet de site d’appel vide avec le type de méthode donné.

Propriétés

Nom Description
Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité.

(Hérité de Object)
JniManagedPeerState

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
JniPeerMembers

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

PeerReference

Obtient la référence d’objet JNI pour cet homologue Java.

(Hérité de Object)
Target

Retourne la méthode cible du site d’appel, qui se comporte comme un champ normal du MutableCallSite. -ou- Met à jour la méthode cible de ce site d’appel, en tant que variable normale.

ThresholdClass

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

ThresholdType

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

Méthodes

Nom Description
Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
Dispose()

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
Dispose(Boolean)

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
DisposeUnlessReferenced()

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
DynamicInvoker()

Produit un handle de méthode équivalent à une invokedynamic instruction liée à ce site d’appel.

Equals(Object)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
GetHashCode()

Retourne une valeur de code de hachage pour l'objet.

(Hérité de Object)
JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
ToArray<T>()

Crée un tableau managé à partir de ce wrapper de tableau Java.

(Hérité de Object)
ToString()

Retourne une représentation de chaîne de l'objet.

(Hérité de Object)
Type()

Retourne le type de la cible de ce site d’appel.

(Hérité de CallSite)
UnregisterFromRuntime()

Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
IJavaPeerable.Disposed()

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
IJavaPeerable.Finalized()

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

(Hérité de JavaObject)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

A MutableCallSite est une CallSite variable cible qui se comporte comme un champ ordinaire.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à