IMethodHandleInfo Interfaccia
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.
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
>/><><class
td><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 |
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 |
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 |
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 |
ToString(ReferenceKind, Class, String, MethodType) |
Restituisce una rappresentazione di stringa per un |
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. |