Langue

IMethodHandleInfo Interface

Définition

Référence symbolique obtenue en craquant une poignée de méthode directe dans ses parties symboliques consitutentes.

[Android.Runtime.Register("java/lang/invoke/MethodHandleInfo", "", "Java.Lang.Invoke.IMethodHandleInfoInvoker", ApiSince=26)]
public interface IMethodHandleInfo : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/lang/invoke/MethodHandleInfo", "", "Java.Lang.Invoke.IMethodHandleInfoInvoker", ApiSince=26)>]
type IMethodHandleInfo = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Attributs
Implémente

Remarques

Référence symbolique obtenue en craquant une poignée de méthode directe dans ses parties symboliques consitutentes. Pour fissurer un handle de méthode directe, appelez Lookup#revealDirect Lookup.revealDirect. <h1>"directmh">Direct Method Handles</h1> A <em>direct method handle</em> représente une méthode, un constructeur ou un champ sans liaisons d’arguments intermédiaires ou d’autres transformations. La méthode, le constructeur ou le champ référencé par un handle de méthode directe est appelé son <>membre</em> sous-jacent. Les handles de méthode directe peuvent être obtenus de l’une des manières suivantes : <ul><li>En exécutant une ldc instruction sur une CONSTANT_MethodHandle constante. (Consultez la spécification Java machine virtuelle, sections 4.4.8 et 5.4.3.) <li>En appelant l’une des méthodes de fabrique de recherche, par Lookup#findVirtual Lookup.findVirtualexemple, pour résoudre une référence symbolique en handle de méthode. Une référence symbolique se compose d’une classe, d’une chaîne de nom et d’un type. <li>En appelant la méthode Lookup#unreflect Lookup.unreflect de fabrique ou Lookup#unreflectSpecial Lookup.unreflectSpecial en convertissant un Method handle de méthode. <li>En appelant la méthode Lookup#unreflectConstructor Lookup.unreflectConstructor de fabrique pour convertir un Constructor handle de méthode. <li>En appelant la méthode Lookup#unreflectGetter Lookup.unreflectGetter de fabrique ou Lookup#unreflectSetter Lookup.unreflectSetter en convertissant un Field handle de méthode. </ul>

<Restrictions h1>sur cracking</h1> Étant donné un objet approprié Lookup , il est possible de fissurer n’importe quel handle de méthode directe pour récupérer une référence symbolique pour la méthode, le constructeur ou le champ sous-jacent. Le craquage doit être effectué via un Lookup objet équivalent à celui qui a créé le handle de méthode cible, ou qui dispose d’autorisations d’accès suffisantes pour recréer un handle de méthode équivalent.

Si la méthode sous-jacente respecte la sensibilité de l’appelant, le handle de méthode directe a été « lié » à une classe d’appelant spécifique, la classe de recherche java.lang.invoke.MethodHandles.Lookup#lookupClass() de l’objet de recherche utilisé pour la créer. La fissure de cette poignée de méthode avec une autre classe de recherche échoue même si la méthode sous-jacente est publique (par exemple Class.forName).

L’exigence de correspondance d’objets de recherche fournit un comportement « échec rapide » pour les programmes qui peuvent autrement approuver une révélation erronée d’un handle de méthode avec des informations symboliques (ou liaison d’appelant) à partir d’une étendue inattendue. Permet java.lang.invoke.MethodHandles#reflectAs de remplacer cette limitation.

<h1>"refkinds">Types de référence</h1> Les méthodes de fabrique de recherche correspondent à tous les cas d’usage majeurs pour les méthodes, les constructeurs et les champs. Ces cas d’usage peuvent être distingués à l’aide de petits entiers comme suit : <table border=1 cellpadding=5 summary="types de référence"><tr><th reference kind>/th th<><>descriptive name</><>th th scope</><><><th comportement></th></tr tr><><>1<><>REF_getField< tr td/><>class<td><td>FT f;</td><>/td(T) this.f;</tr tr><><td><>/td2<><>/tdREF_getStatictd<>< ou >class/tdinterface<><>td brstatic<>/FT f;<><>td td/td/(T) C.f;<tr tr><><td><>/3<><>td/td/REF_putField<><>tdclass<><>/FT f;<><>td/td/td/td/tr trthis.f = x;<><><><>4<td/><>REF_putStatic<td/><>class<td/td/td td/td><>static<br>FT f;</td/td><>C.f = arg;</td></tr tr><><>5< td/><>REF_invokeVirtual<td><>class</td/><>T m(A*);<td td/td/td/td/td><>(T) this.m(arg*);</tr></tr><><>6<td/><>REF_invokeStatic<td/td><td>class ouinterface< /><>static<td td br>T m(A*);</td td/td><>(T) C.m(arg*);</td></tr tr><><td>7</><>REF_invokeSpecial<td/td td ou ><>classinterface< /td><>T m(A*);< td/td/td/td><>(T) super.m(arg*);</td/td/tr><><tr><td>8</><>REF_newInvokeSpecial<td/td><>class</td/td><>C(A*);< td/td/td><>new C(arg*);</td></tr tr><><>9< td/><>REF_invokeInterface<td/td><>interface</td/><>T m(A*);<td/td/td/td/td><>(T) this.m(arg*);</td></tr></table>

Ajouté dans la version 1.8.

Java documentation pour java.lang.invoke.MethodHandleInfo.

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

Propriétés

Nom Description
DeclaringClass

Retourne la classe dans laquelle le membre sous-jacent du handle de méthode fissuré a été défini.

Handle

Obtient la valeur JNI de l’objet Android sous-jacent.

(Hérité de IJavaObject)
IsVarArgs

Détermine si le membre sous-jacent était une méthode ou un constructeur de variable.

JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniObjectReferenceControlBlock

Référence symbolique obtenue en craquant une poignée de méthode directe dans ses parties symboliques consitutentes.

(Hérité de IJavaPeerable)
JniPeerMembers

Prise en charge de l’accès aux membres et de l’appel.

(Hérité de IJavaPeerable)
MethodType

Retourne le type nominal de la référence symbolique craquelée, exprimée sous la forme d’un type de méthode.

Modifiers

Retourne les modificateurs d’accès du membre sous-jacent.

Name

Retourne le nom du membre sous-jacent du handle de méthode craqué.

PeerReference

Retourne une JniObjectReference instance d’objet Java encapsulée.

(Hérité de IJavaPeerable)
ReferenceKind

Retourne le type de référence du handle de méthode craqué, qui détermine à son tour si le membre sous-jacent du handle de méthode était un constructeur, une méthode ou un champ.

Méthodes

Nom Description
Disposed()

Appelé lorsque l’instance a été supprimée.

(Hérité de IJavaPeerable)
DisposeUnlessReferenced()

S’il n’existe aucune référence en suspens à cette instance, les appels Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
ReferenceKindToString(ReferenceKind)

Retourne le nom descriptif du type de référence donné, tel que défini dans le tableau ci-dessus.

RefKindIsField(ReferenceKind)

Ce membre est déconseillé.

RefKindIsValid(ReferenceKind)

Ce membre est déconseillé.

RefKindName(ReferenceKind)

Ce membre est déconseillé.

ReflectAs(Class, MethodHandles+Lookup)

Reflète le membre sous-jacent en tant qu’objet de méthode, constructeur ou champ.

SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

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

Référence symbolique obtenue en craquant une poignée de méthode directe dans ses parties symboliques consitutentes.

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

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
ToString(ReferenceKind, Class, String, MethodType)

Retourne une représentation sous forme de chaîne pour un MethodHandleInfo, compte tenu des quatre parties de sa référence symbolique.

UnregisterFromRuntime()

Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Hérité de IJavaPeerable)

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)

Référence symbolique obtenue en craquant une poignée de méthode directe dans ses parties symboliques consitutentes.

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

S’applique à