IMethodHandleInfo Interfaz

Definición

Una referencia simbólica obtenida mediante el descifrado de 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

Una referencia simbólica obtenida mediante el descifrado de 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> representa un método, constructor o campo sin enlaces de argumentos intermedios u otras transformaciones. 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 > instrucción en una < constante.>ldcCONSTANT_MethodHandle (Consulte la especificación de máquina virtual de 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 elemento Constructor 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 en 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 permisos de acceso suficientes para volver a crear un identificador de método equivalente.

Si el método subyacente distingue el llamador, el identificador del 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. Se producirá un error al descifrar este identificador de método con una clase de búsqueda diferente 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><td>REF_getField</td><td>class</td><>FT f;< td td/td><>(T) this.f;</td></tr><tr><td>2</td><td>REF_getStatic</td td td><>class ointerface< /td><td>static<br>FT f;</td><>(T) C.f;< td/td></tr tr><><td>3</td><>REF_putField< td/td><td>class</td><>FT f;< td/td td></td td>this.f = x;<></tr tr><><td>4</td><>REF_putStatic< td/td td><>class</td td><>static<br>FT f;</td><td/td>C.f = arg;<></tr><><tr td>5</td><td>REF_invokeVirtual</td><>class< td/td td></td>T m(A*);< td td/td><td>(T) this.m(arg*);</td></tr tr><td><>/td6td<><>/tdREF_invokeStatictd<>< o >class/td tdinterface<><>brstatic<>/tdT m(A*);td/td<><>(T) C.m(arg*);</tr tr><><td><>/td7td<><>/td tdREF_invokeSpecial<>< td o>class /tdinterface<td><>/td tdT m(A*);/td/td<><>(T) super.m(arg*);</tr ><><tr><td>8</td><td>REF_newInvokeSpecial</td><td>class</td td><>C(A*);</td td></td>new C(arg*);<></tr tr><><td>9</td><td>REF_invokeInterface</td><>interface< td/td><td>T m(A*);</td td/td><td>(T) this.m(arg*);</td/td></tr></table>

Agregado en la versión 1.8.

Java documentación para java.lang.invoke.MethodHandleInfo.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Propiedades

Nombre Description
DeclaringClass

Devuelve la clase en la que se definió el miembro subyacente del método descifrado.

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 java.lang.System.identityHashCode() para la instancia ajustada.

(Heredado de IJavaPeerable)
JniManagedPeerState

Estado del mismo nivel administrado.

(Heredado de IJavaPeerable)
JniObjectReferenceControlBlock

Una referencia simbólica obtenida mediante el descifrado de un identificador de método directo en sus partes simbólicas consituntes.

(Heredado de IJavaPeerable)
JniPeerMembers

Compatibilidad con la invocación y el acceso de miembros.

(Heredado de IJavaPeerable)
MethodType

Devuelve el tipo nominal de la referencia simbólica descifrada, expresada como un tipo de método.

Modifiers

Devuelve los modificadores de acceso del miembro subyacente.

Name

Devuelve el nombre del miembro subyacente del método descifrado.

PeerReference

Devuelve una JniObjectReference de la instancia de objeto Java ajustada.

(Heredado de IJavaPeerable)
ReferenceKind

Devuelve el tipo de referencia del identificador de método descifrado, que a su vez determina si el miembro subyacente del identificador de método era un constructor, método o campo.

Métodos

Nombre Description
Disposed()

Se llama cuando se ha eliminado la instancia.

(Heredado de IJavaPeerable)
DisposeUnlessReferenced()

Si no hay referencias pendientes a esta instancia, llama a Dispose(); de lo contrario, no hace nada.

(Heredado de IJavaPeerable)
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 un método, constructor o objeto de campo.

SetJniIdentityHashCode(Int32)

Establezca el valor devuelto por JniIdentityHashCode.

(Heredado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Una referencia simbólica obtenida mediante el descifrado de un identificador de método directo en sus partes simbólicas consituntes.

(Heredado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Establezca el valor devuelto por PeerReference.

(Heredado de IJavaPeerable)
ToString(ReferenceKind, Class, String, MethodType)

Devuelve una representación de cadena para , MethodHandleInfodadas las cuatro partes de su referencia simbólica.

UnregisterFromRuntime()

Anule el registro de esta instancia para que el entorno de ejecución no lo devuelva de invocaciones futuras Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Heredado de IJavaPeerable)

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Una referencia simbólica obtenida mediante el descifrado de un identificador de método directo en sus partes simbólicas consituntes.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a