IMethodHandleInfo Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes.
[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
- Atributos
- Implementaciones
Comentarios
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. Para descifrar un identificador de método directo, llame a Lookup#revealDirect Lookup.revealDirect
. <h1>"directmh">Direct Method Handles</h1> A <em>direct method handle</em> represents a method, constructor, or field without any intervening argument bindings or other transformations. El método, constructor o campo al que hace referencia un identificador de método directo se denomina miembro <>subyacente</em>. Los identificadores de método directo se pueden obtener de cualquiera de estas maneras: ul>li Ejecutando una ldc
instrucción en una CONSTANT_MethodHandle
constante.><< (Consulte la especificación de máquina virtual Java, secciones 4.4.8 y 5.4.3). <Li>Llamando a uno de los métodos de factoría de búsqueda, como Lookup#findVirtual Lookup.findVirtual
, para resolver una referencia simbólica en un identificador de método. Una referencia simbólica consta de una clase, una cadena de nombre y un tipo. <li>Llamando al método Lookup#unreflect Lookup.unreflect
factory o Lookup#unreflectSpecial Lookup.unreflectSpecial
para convertir un Method
en un identificador de método. <li>Llamando al método Lookup#unreflectConstructor Lookup.unreflectConstructor
factory para convertir un Constructor
elemento en un identificador de método. <li>Llamando al método Lookup#unreflectGetter Lookup.unreflectGetter
factory o Lookup#unreflectSetter Lookup.unreflectSetter
para convertir un Field
en un identificador de método. </ul>
<h1>Restricciones de cracking</h1> Dado un objeto adecuado Lookup
, es posible descifrar cualquier identificador de método directo para recuperar una referencia simbólica para el método subyacente, constructor o campo. El descifrado debe realizarse a través de un Lookup
objeto equivalente al que creó el identificador del método de destino o que tiene suficientes permisos de acceso para volver a crear un identificador de método equivalente.
Si el método subyacente distingue el autor de la llamada, el identificador de método directo se habrá "enlazado" a una clase de llamador determinada, la clase de búsqueda java.lang.invoke.MethodHandles.Lookup#lookupClass() del objeto de búsqueda usado para crearlo. Al descifrar este identificador de método con una clase de búsqueda diferente, se producirá un error incluso si el método subyacente es público (como Class.forName
).
El requisito de coincidencia de objetos de búsqueda proporciona un comportamiento de "error rápido" para los programas que, de lo contrario, pueden confiar en la revelación errónea de un identificador de método con información simbólica (o enlace de llamador) desde un ámbito inesperado. Use java.lang.invoke.MethodHandles#reflectAs
para invalidar esta limitación.
<h1>"refkinds">Reference kinds</h1> The Lookup Factory Methods corresponde a todos los casos de uso principales para métodos, constructores y campos. Estos casos de uso se pueden distinguir con enteros pequeños como se indica a continuación: <table border=1 cellpadding=5 summary="reference kinds"><tr><>th reference kind</th description name</th>><scope/th scope</th><>member</><>><>th behavior</><th/tr tr<>><td<1
>/td tdREF_getField
<><>/td><<class
> td/<><FT f;
>td td/td td td/td t>></td></tr tr>><<td>2
</td><td><REF_getStatic
/td td>class
>< o interface
</td><td>static
<br><FT f;
/td><td>(T) C.f;
</td></tr><><td<>3
/td td<>><REF_putField
/td>><<class
td/td td/td<>td><FT f;
/>this.f = x;
<><td td/td></tr tr<>(T) this.f;
<td>4
</td><td>REF_putStatic
</td><td><class
/td td td>><static
<br<>FT f;
/td><tdC.f = arg;
<>/td<>/tr><<>td<5
>/td>REF_invokeVirtual
<>< td/td>class
<>< td/td<<T m(A*);
>> td/td td></td(T) this.m(arg*);
></td<>/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
o interface
</td><<>T m(A*);
td/td td/td td>><<(T) super.m(arg*);
/td<>><><tr><td>8
</td><td>REF_newInvokeSpecial
</td td>><<class
/td td>C(A*);
<></td td>><new C(arg*);
</td></tr><><td<>9
/td<>><REF_invokeInterface
td/td td><<>interface
/td>>T m(A*);
<< td/td td/td td>><<(T) this.m(arg*);
/td/td<>/tr></table>
Se agregó en la versión 1.8.
Documentación de Java para java.lang.invoke.MethodHandleInfo
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código y se usan según los términos descritos en la creative Commons 2.5.
Propiedades
DeclaringClass |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |
Handle |
Obtiene el valor JNI del objeto Android subyacente. (Heredado de IJavaObject) |
IsVarArgs |
Determina si el miembro subyacente era un método o constructor de arity variable. |
JniIdentityHashCode |
Devuelve el valor de |
JniManagedPeerState |
Estado del mismo nivel administrado. (Heredado de IJavaPeerable) |
JniPeerMembers |
Compatibilidad con la invocación y el acceso a miembros. (Heredado de IJavaPeerable) |
MethodType |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |
Modifiers |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |
Name |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |
PeerReference |
Devuelve una JniObjectReference de la instancia de objeto java ajustada. (Heredado de IJavaPeerable) |
ReferenceKind |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |
Métodos
Disposed() |
Se llama cuando se ha eliminado la instancia. (Heredado de IJavaPeerable) |
DisposeUnlessReferenced() |
Si no hay referencias pendientes a esta instancia, llama a |
Finalized() |
Se llama cuando se ha finalizado la instancia. (Heredado de IJavaPeerable) |
ReferenceKindToString(ReferenceKind) |
Devuelve el nombre descriptivo del tipo de referencia especificado, tal como se define en la tabla anterior. |
RefKindIsField(ReferenceKind) |
Este miembro está en desuso. |
RefKindIsValid(ReferenceKind) |
Este miembro está en desuso. |
RefKindName(ReferenceKind) |
Este miembro está en desuso. |
ReflectAs(Class, MethodHandles+Lookup) |
Refleja el miembro subyacente como método, constructor o objeto de campo. |
SetJniIdentityHashCode(Int32) |
Establezca el valor devuelto por |
SetJniManagedPeerState(JniManagedPeerStates) |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. (Heredado de IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Establezca el valor devuelto por |
ToString(ReferenceKind, Class, String, MethodType) |
Devuelve una representación de cadena para , |
UnregisterFromRuntime() |
Anule el registro de esta instancia para que el entorno de ejecución no lo devuelva de Java.Interop.JniRuntime+JniValueManager.PeekValue futuras invocaciones. (Heredado de IJavaPeerable) |
Métodos de extensión
JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
JavaCast<TResult>(IJavaObject) |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |
GetJniTypeName(IJavaPeerable) |
Referencia simbólica obtenida al descifrar un identificador de método directo en sus partes simbólicas consituntes. |