Share via


IMethodHandleInfo Interfaccia

Definizione

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

[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
Attributi
Implementazioni

Commenti

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti. Per violare un handle di metodo diretto, chiamare Lookup#revealDirect Lookup.revealDirect. <h1>"directmh">Direct Method Handle</h1> A <em>direct method handle</em> rappresenta un metodo, un costruttore o un campo senza associazioni di argomenti o altre trasformazioni. Il metodo, il costruttore o il campo a cui fa riferimento un handle di metodo diretto viene chiamato <membro</>em> sottostante. Gli handle di metodo diretto possono essere ottenuti in uno dei modi seguenti: <ul<>li>Eseguendo un'istruzione ldc su una CONSTANT_MethodHandle costante. Vedere la specifica della macchina virtuale Java, le sezioni 4.4.8 e 5.4.3. <li>Chiamando uno dei metodi della factory di ricerca, ad esempio Lookup#findVirtual Lookup.findVirtual, per risolvere un riferimento simbolico in un handle di metodo. Un riferimento simbolico è costituito da una classe, una stringa di nome e un tipo. <li>Chiamando il metodo Lookup#unreflect Lookup.unreflect factory o Lookup#unreflectSpecial Lookup.unreflectSpecial per convertire un oggetto in un Method handle di metodo. <li>Chiamando il metodo Lookup#unreflectConstructor Lookup.unreflectConstructor factory per convertire un oggetto Constructor in un handle di metodo. <li>Chiamando il metodo Lookup#unreflectGetter Lookup.unreflectGetter factory o Lookup#unreflectSetter Lookup.unreflectSetter per convertire un oggetto in un Field handle di metodo. </ul>

<h1>Restrizioni per cracking</h1> Dato un oggetto appropriato Lookup , è possibile violare qualsiasi handle di metodo diretto per recuperare un riferimento simbolico per il metodo, il costruttore o il campo sottostante. Il cracking deve essere eseguito tramite un Lookup oggetto equivalente a quello che ha creato l'handle del metodo di destinazione o che dispone di autorizzazioni di accesso sufficienti per ricreare un handle di metodo equivalente.

Se il metodo sottostante è sensibile al chiamante, l'handle del metodo diretto sarà stato "associato" a una determinata classe chiamante, la classe java.lang.invoke.MethodHandles.Lookup#lookupClass() dell'oggetto di ricerca usato per crearla. Il cracking di questo handle di metodo con una classe di ricerca diversa avrà esito negativo anche se il metodo sottostante è pubblico (ad esempio Class.forName).

Il requisito di corrispondenza degli oggetti di ricerca fornisce un comportamento di "errore rapido" per i programmi che potrebbero altrimenti considerare attendibile la rivelazione errata di un handle di metodo con informazioni simbolico (o associazione chiamante) da un ambito imprevisto. Usare java.lang.invoke.MethodHandles#reflectAs per ignorare questa limitazione.

<h1>"refkinds">Reference kinds</h1> I metodi di Lookup Factory corrispondono a tutti i principali casi d'uso per metodi, costruttori e campi. Questi casi d'uso possono essere distinti usando numeri interi di piccole dimensioni come indicato di seguito: <table border=1 cellpadding=5 summary="reference kinds"><tr><th>reference kind</>><th description name</th th><>scope</th>><member</th th><>behavior</th></tr tr<><>td><1/td td<REF_getField>/><><classtd><td/<>FT f;<>><td td>/td></tr tr>><<td>2</td><td><REF_getStatic/td td>class>< or interface</td td><static><br><FT f;/td><td><(T) C.f;/td></tr tr>><<td><3/td><>REF_putField< td/td><class<>/td td>><<FT f;/tr<><><>><this.f = x;(T) this.f;<td>4</td><td>REF_putStatic</td><td><class/td td>><static<br><FT f;/td td>C.f = arg;</td>><</tr tr><<>td><5/td><td>REF_invokeVirtual</td><td><class/td>><<T m(A*);/td td/td><(T) this.m(arg*);></td></tr tr<>><td><6/td><td><REF_invokeStatic/td td>class>< o interface</td td><>static<br><T m(A*);/td td><><(T) C.m(arg*);/td></tr tr><<>td><7/td><td>REF_invokeSpecial</td td>><class or interface</td><td>T m(A*);</td td/td><><><(T) super.m(arg*);/tr ><><tr><td><8/td><td><REF_newInvokeSpecial/td><td><class/td><td><C(A*);/td td><new C(arg*);/td>><</tr tr><<>td><9/td><td><REF_invokeInterface/td><td><interface/>>T m(A*);<<td/td td/td></td><(T) this.m(arg*);<>/tr></table>

Aggiunta nella versione 1.8.

Documentazione java per java.lang.invoke.MethodHandleInfo.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Proprietà

DeclaringClass

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

Handle

Ottiene il valore JNI dell'oggetto Android sottostante.

(Ereditato da IJavaObject)
IsVarArgs

Determina se il membro sottostante è un metodo o un costruttore di arity variabile.

JniIdentityHashCode

Restituisce il valore di java.lang.System.identityHashCode() per l'istanza di di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)
JniManagedPeerState

Stato del peer gestito.

(Ereditato da IJavaPeerable)
JniPeerMembers

Supporto per l'accesso ai membri e la chiamata.

(Ereditato da IJavaPeerable)
MethodType

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

Modifiers

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

Name

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

PeerReference

Restituisce un JniObjectReference oggetto dell'istanza dell'oggetto Java di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)
ReferenceKind

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

Metodi

Disposed()

Chiamato quando l'istanza è stata eliminata.

(Ereditato da IJavaPeerable)
DisposeUnlessReferenced()

Se non sono presenti riferimenti in sospeso a questa istanza, chiama Dispose(); in caso contrario, non esegue alcuna operazione.

(Ereditato da IJavaPeerable)
Finalized()

Chiamato quando l'istanza è stata finalizzata.

(Ereditato da IJavaPeerable)
ReferenceKindToString(ReferenceKind)

Restituisce il nome descrittivo del tipo di riferimento specificato, come definito nella tabella precedente.

RefKindIsField(ReferenceKind)

Metodo deprecato.

RefKindIsValid(ReferenceKind)

Metodo deprecato.

RefKindName(ReferenceKind)

Metodo deprecato.

ReflectAs(Class, MethodHandles+Lookup)

Riflette il membro sottostante come metodo, costruttore o oggetto campo.

SetJniIdentityHashCode(Int32)

Impostare il valore restituito da JniIdentityHashCode.

(Ereditato da IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

(Ereditato da IJavaPeerable)
SetPeerReference(JniObjectReference)

Impostare il valore restituito da PeerReference.

(Ereditato da IJavaPeerable)
ToString(ReferenceKind, Class, String, MethodType)

Restituisce una rappresentazione di stringa per un MethodHandleInfooggetto , in base alle quattro parti del relativo riferimento simbolico.

UnregisterFromRuntime()

Annullare la registrazione di questa istanza in modo che il runtime non lo restituisca dalle chiamate future Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Ereditato da IJavaPeerable)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

GetJniTypeName(IJavaPeerable)

Riferimento simbolico ottenuto suddividendo un handle di metodo diretto nelle parti simbolice consitutenti.

Si applica a