IMethodHandleInfo Interfaz

Definición

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

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

SetJniIdentityHashCode(Int32)

Establezca el valor devuelto por JniIdentityHashCode.

(Heredado de IJavaPeerable)
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 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 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.

Se aplica a