Compartir a través de


MethodHandles.Lookup Clase

Definición

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

[Android.Runtime.Register("java/lang/invoke/MethodHandles$Lookup", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class MethodHandles.Lookup : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/MethodHandles$Lookup", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodHandles.Lookup = class
    inherit Object
Herencia
MethodHandles.Lookup
Atributos

Comentarios

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso. Los identificadores de método no realizan comprobaciones de acceso cuando se llaman, sino cuando se crean. Por lo tanto, se deben aplicar restricciones de acceso para controlar el método cuando se crea un identificador de método. La clase de llamador con la que se aplican esas restricciones se conoce como la clase de búsqueda #lookupClass.

Una clase de búsqueda que necesita crear identificadores de método llamará #lookup MethodHandles.lookup para crear un generador para sí mismo. Cuando se crea el Lookup objeto de fábrica, se determina la identidad de la clase de búsqueda y se almacena de forma segura en el Lookup objeto . La clase de búsqueda (o sus delegados) puede usar métodos de fábrica en el Lookup objeto para crear identificadores de método para los miembros comprobados por el acceso. Esto incluye todos los métodos, constructores y campos que se permiten a la clase de búsqueda, incluso a los privados.

<h1>"lookups">Lookup Factory Methods</h1> Los métodos de fábrica de un Lookup objeto corresponden a todos los casos de uso principales para métodos, constructores y campos. Cada identificador de método creado por un método de fábrica es el equivalente funcional de un <determinado comportamiento<> de código de bytes em>. (Los comportamientos de código de bytes se describen en la sección 5.4.3.5 de la especificación de máquina virtual Java). Este es un resumen de la correspondencia entre estos métodos de fábrica y el comportamiento que controla el método resultante: <table border=1 cellpadding=5 summary="lookup method behaviors"><tr><th>"equiv">lookup expression</th th<>>member</th<>>bytecode behavior</th<>/tr tr>><<td><java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)/td><<FT f;> td/td><td/td/trd<>(T) this.f;<>/tr><tr><td>java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)</td td>static<<>br>FT f;</td><td><(T) C.f;/td></tr tr><<>td><java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)/td td>>FT f;<</td><td><this.f = x;/td></tr tr>><<td><java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)/td><static><brFT f;></td td><td><C.f = arg;/td/td<>/tr tr><><td><java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)/td td>>T m(A*);<</td><td>(T) this.m(arg*);</td></tr tr>><<td>java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)</td td>static<<>br><T m(A*);/td><(T) C.m(arg*);<> td/td></tr tr><><td><java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)/td td/td>>T m(A*);<< td/td td></td<<(T) super.m(arg*);>>/tr tr tr><td><java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)/td><td><C(A*);/td><td>new C(arg*);</td></tr tr><<>td><java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)/td td><>()?<static><br>FT f;</td td><><(FT) aField.get(thisOrNull);/td></tr tr>><<td>java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)</td td><>()?<staticbr>FT f;</td td><><aField.set(thisOrNull, arg);/td></tr tr>><<td>java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)</td td><>()?<staticbr><T m(A*);/td td>><(T) aMethod.invoke(thisOrNull, arg*);</td></tr tr><<>td><java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)/td td>><C(A*);</td td></td><<>(C) aConstructor.newInstance(arg*);/tr tr><><td>java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)</td>><()?<staticbr>T m(A*);</td td>><(T) aMethod.invoke(thisOrNull, arg*);</td></tr></table>

Aquí, el tipo C es la clase o interfaz que se busca en un miembro, documentado como un parámetro denominado refc en los métodos de búsqueda. El tipo MT de método se compone del tipo T de valor devuelto y la secuencia de tipos A*de argumento . El constructor también tiene una secuencia de tipos A* de argumentos y se considera que devuelve el objeto recién creado de tipo C. Tanto como MT el tipo FT de campo se documentan como un parámetro denominado type. El parámetro this formal representa la referencia automática del tipo C; si está presente, siempre es el argumento inicial de la invocación del identificador de método. (En el caso de algunos protected miembros, this puede restringirse en el tipo a la clase de búsqueda; vea a continuación). El nombre arg representa todos los demás argumentos de identificador de método. En los ejemplos de código de Core Reflection API, el nombre thisOrNull representa una referencia nula si el método o campo al que se accede es estático y this , de lo contrario, . Los nombres aMethod, aFieldy aConstructor se corresponden con los objetos reflectantes correspondientes a los miembros especificados.

En los casos en los que el miembro especificado es de aridad variable (es decir, un método o constructor), el identificador de método devuelto también será de la aridad de variables MethodHandle#asVarargsCollector. En todos los demás casos, el identificador de método devuelto será de aridad fija. <p style="font-size:smaller;"><em>Discussion:</em> La equivalencia entre identificadores de método buscados y miembros de clase subyacentes y comportamientos de código de bytes puede desglosarse de varias maneras: <ul style="font-size:smaller;"><li>Si C no es accesible simbólicamente desde el cargador de la clase de búsqueda, la búsqueda todavía puede realizarse correctamente, incluso cuando no hay ninguna expresión java equivalente o constante codificada por bytes. <Del>mismo modo, si T o MT no es accesible simbólicamente desde el cargador de la clase de búsqueda, la búsqueda todavía puede realizarse correctamente. Por ejemplo, las búsquedas de MethodHandle.invokeExact y MethodHandle.invoke siempre se realizarán correctamente, independientemente del tipo solicitado. <li>Si hay un administrador de seguridad instalado, puede prohibir la búsqueda en varios motivos (consulte a continuación). Por el contrario, la ldc instrucción de una CONSTANT_MethodHandle constante no está sujeta a comprobaciones del administrador de seguridad. <li>Si el método buscado tiene una aridad muy grande, es posible que se produzca un error en la creación del identificador del método, debido a que el tipo de identificador del método tiene demasiados parámetros. </ul>

<h1>"access">Comprobación de acceso/h1> Comprobaciones de acceso< se aplican en los métodos de fábrica de Lookup, cuando se crea un identificador de método. Esta es una diferencia clave de Core Reflection API, ya que java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke realiza la comprobación de acceso en cada llamador, en cada llamada.

Todas las comprobaciones de acceso se inician desde un Lookup objeto , que compara su clase de búsqueda registrada con todas las solicitudes para crear identificadores de método. Se puede usar un único Lookup objeto para crear cualquier número de identificadores de método comprobados de acceso, todos comprobados con una sola clase de búsqueda.

Un Lookup objeto se puede compartir con otro código de confianza, como un protocolo de metaobjeto. Un objeto compartido Lookup delega la capacidad de crear identificadores de método en miembros privados de la clase de búsqueda. Incluso si el código con privilegios usa el Lookup objeto , la comprobación de acceso se limita a los privilegios de la clase de búsqueda original.

Se puede producir un error en una búsqueda, porque la clase contenedora no es accesible para la clase de búsqueda o porque falta el miembro de clase deseado, o porque el miembro de clase deseado no es accesible para la clase de búsqueda o porque el objeto de búsqueda no es de confianza suficiente para acceder al miembro. En cualquiera de estos casos, se producirá una ReflectiveOperationException excepción a partir de la búsqueda intentada. La clase exacta será una de las siguientes: <ul><li>NoSuchMethodException — si se solicita un método pero no existe <li>NoSuchFieldException — si se solicita un campo pero no existe <li>IllegalAccessException — si el miembro existe pero se produce <un error en una comprobación de acceso /ul>

En general, las condiciones en las que se puede buscar un M identificador de método no son más restrictivas que las condiciones en las que la clase de búsqueda podría haber compilado, comprobado y resuelto una llamada a M. Donde JVM generaría excepciones como NoSuchMethodError, una búsqueda de identificadores de método generalmente generará una excepción comprobada correspondiente, como NoSuchMethodException. Y el efecto de invocar el identificador de método resultante de la búsqueda es exactamente equivalente a ejecutar la llamada compilada, comprobada y resuelta a M. El mismo punto es cierto en los campos y constructores. <p style="font-size:smaller;"><Em>Discussion:</em> Las comprobaciones de access solo se aplican a métodos, constructores y campos con nombre y reflejados. Otros métodos de creación de identificadores, como MethodHandle#asType MethodHandle.asType, no requieren ninguna comprobación de acceso y se usan independientemente de ningún Lookup objeto.

Si el miembro deseado es protected, se aplican las reglas habituales de JVM, incluido el requisito de que la clase de búsqueda debe estar en el mismo paquete que el miembro deseado o debe heredar ese miembro. (Consulte la especificación de máquina virtual Java, secciones 4.9.2, 5.4.3.5 y 6.4). Además, si el miembro deseado es un campo o método no estático en un paquete diferente, el identificador de método resultante solo se puede aplicar a objetos de la clase de búsqueda o a una de sus subclases. Este requisito se aplica al restringir el tipo del parámetro inicial this de C (que necesariamente será una superclase de la clase de búsqueda) a la propia clase de búsqueda.

JVM impone un requisito similar en la invokespecial instrucción , que el argumento receiver debe coincidir con el método <resuelto em>y</em> la clase actual. De nuevo, este requisito se aplica al restringir el tipo del parámetro inicial al identificador del método resultante. (Consulte la especificación de máquina virtual Java, sección 4.10.1.9).

JVM representa constructores y bloques de inicializador estáticos como métodos internos con nombres especiales ("<init>" y "<clinit>"). La sintaxis interna de las instrucciones de invocación les permite hacer referencia a estos métodos internos como si fueran métodos normales, pero el comprobador de código de bytes de JVM los rechaza. Una búsqueda de este tipo de método interno generará un NoSuchMethodException.

En algunos casos, el compilador de Java obtiene el acceso entre clases anidadas mediante la creación de un método contenedor para acceder a un método privado de otra clase en la misma declaración de nivel superior. Por ejemplo, una clase C.D anidada puede tener acceso a miembros privados dentro de otras clases relacionadas, como C, C.D.Eo C.B, pero es posible que el compilador de Java tenga que generar métodos contenedor en esas clases relacionadas. En tales casos, un Lookup objeto en C.E no podría ser capaz de esos miembros privados. Una solución alternativa para esta limitación es el Lookup#in Lookup.in método , que puede transformar una búsqueda en C.E una en cualquiera de esas otras clases, sin una elevación especial de privilegios.

Los accesos permitidos a un objeto de búsqueda determinado pueden estar limitados, según su conjunto de #lookupModes lookupModes, a un subconjunto de miembros a los que normalmente se puede acceder a la clase de búsqueda. Por ejemplo, el #publicLookup publicLookup método genera un objeto de búsqueda que solo puede tener acceso a miembros públicos en clases públicas. El método #lookup lookup sensible al llamador genera un objeto de búsqueda con funcionalidades completas relativas a su clase de llamador, para emular todos los comportamientos de código de bytes admitidos. Además, el Lookup#in Lookup.in método puede producir un objeto de búsqueda con menos modos de acceso que el objeto de búsqueda original.

<p style="font-size:smaller;"> " privacc"><em>Discusión de acceso privado:</em> Decimos que una búsqueda tiene <acceso>privado</em> si sus modos de búsqueda #lookupModes incluyen la posibilidad de acceder a private los miembros. Como se documenta en los métodos pertinentes en otra parte, solo las búsquedas con acceso privado poseen las siguientes funcionalidades: <ul style="font-size:smaller;"><li>access private fields, methods, and constructors of the lookup class <li>create method handles which invoke caller sensitive methods, such as Class.forName<li>create method handles which Lookup#findSpecial emulate invokespecial instructions <li>avoid package access checks for classes accessible to the lookup class <li>create Lookup#in delegated lookup objects which have private access to other classes within the same package member </ul><p style="font-size: más pequeño;"> Cada uno de estos permisos es consecuencia del hecho de que un objeto de búsqueda con acceso privado se puede rastrear de forma segura a una clase de origen, cuyos comportamientos de código de bytes y permisos de acceso al lenguaje Java se pueden determinar y emular de forma confiable por identificadores de método.

<h1>"secmgr">Interacciones del administrador de seguridad/h1> Aunque las instrucciones de código de bytes solo pueden hacer referencia a clases de un cargador de clases relacionado, esta API puede buscar métodos< en cualquier clase, siempre y cuando esté disponible una referencia a su Class objeto. Estas referencias entre cargadores también son posibles con Core Reflection API y son imposibles de codificar por bytes instrucciones como invokestatic o getfield. Hay una API de administrador de seguridad java.lang.SecurityManager para permitir que las aplicaciones comprueben estas referencias entre cargadores. Estas comprobaciones se aplican tanto a la MethodHandles.Lookup API como a core Reflection API (como se encuentra en java.lang.Class Class).

Si hay un administrador de seguridad presente, las búsquedas de miembros están sujetas a comprobaciones adicionales. De una a tres llamadas se realizan al administrador de seguridad. Cualquiera de estas llamadas puede rechazar el acceso iniciando una java.lang.SecurityException SecurityExceptionexcepción . Defina smgr como administrador de seguridad, lookc como la clase de búsqueda del objeto de búsqueda actual, refc como la clase contenedora en la que se busca el miembro y defc como la clase en la que se define realmente el miembro. El valor lookc se define como <em>no present</em> si el objeto de búsqueda actual no tiene acceso privado. Las llamadas se realizan según las reglas siguientes: <ul><li><b>Step 1:</b> If lookc is not present, or if its class loader is not the same as or an antecesor of the class loader of refc, then SecurityManager#checkPackageAccess smgr.checkPackageAccess(refcPkg) is called, where refcPkg is the package of refc. <li><b>Paso 2:</b> Si el miembro recuperado no es público y lookc no está presente, se SecurityManager#checkPermission smgr.checkPermission llama a con RuntimePermission("accessDeclaredMembers") . <li><b>Step 3:</b> If the retrieved member is not public, and if lookc is not present, and if defc and refc are different, then SecurityManager#checkPackageAccess smgr.checkPackageAccess(defcPkg) is called, where defcPkg is the package of defc. <Las comprobaciones de seguridad /ul> se realizan después de que se hayan superado otras comprobaciones de acceso. Por lo tanto, las reglas anteriores presuponen un miembro público o, de lo contrario, al que se accede desde una clase de búsqueda que tiene derechos para acceder al miembro.

<h1>"callsens">Métodos sensibles al llamador/h1> Un pequeño número de métodos< java tiene una propiedad especial denominada sensibilidad del autor de la llamada. Un <método em>sensible a< la llamada/em> puede comportarse de forma diferente en función de la identidad de su llamador inmediato.

Si se solicita un identificador de método para un método sensible a la llamada, se aplican las reglas generales para los comportamientos de código de bytes, pero tienen en cuenta la clase de búsqueda de una manera especial. El controlador de método resultante se comporta como si se llamara desde una instrucción contenida en la clase de búsqueda, de modo que el método sensible a la llamada detecte la clase de búsqueda. (Por el contrario, se ignora el invocador del identificador de método). Por lo tanto, en el caso de los métodos sensibles a la llamada, diferentes clases de búsqueda pueden dar lugar a identificadores de método de comportamiento diferente.

En los casos en los que el objeto de búsqueda es #publicLookup publicLookup(), o algún otro objeto de búsqueda sin acceso privado, se omita la clase de búsqueda. En tales casos, no se puede crear ningún identificador de método sensible a la llamada, el acceso está prohibido y se produce un error en la búsqueda con .IllegalAccessException <p style="font-size:smaller;"><em>Discussion:</em> Por ejemplo, el método java.lang.Class#forName(String) Class.forName(x) sensible a la llamada puede devolver clases variables o producir excepciones variables, dependiendo del cargador de clases de la clase que lo llama. Se producirá un error en una búsqueda pública de Class.forName , ya que no hay ninguna manera razonable de determinar su comportamiento de código de bytes. <p style="font-size:smaller;"> Si un método de caché de aplicaciones controla el uso compartido amplio, debe usarlos publicLookup() para crearlos. Si hay una búsqueda de Class.forName, se producirá un error y la aplicación debe tomar las medidas adecuadas en ese caso. Puede ser que una búsqueda posterior, quizás durante la invocación de un método de arranque, pueda incorporar la identidad específica del autor de la llamada, lo que hace que el método sea accesible. <p style="font-size:smaller;"> La función MethodHandles.lookup es sensible al autor de la llamada para que pueda haber una base segura para las búsquedas. Casi todos los demás métodos de la API de JSR 292 dependen de objetos de búsqueda para comprobar las solicitudes de acceso.

Documentación de Java para java.lang.invoke.MethodHandles.Lookup.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Campos

Package
Obsoletos.

Máscara de un solo bit que representa el package acceso (acceso predeterminado), que puede contribuir al resultado de #lookupModes lookupModes.

Private
Obsoletos.

Máscara de un solo bit que representa private el acceso, que puede contribuir al resultado de #lookupModes lookupModes.

Protected
Obsoletos.

Máscara de un solo bit que representa protected el acceso, que puede contribuir al resultado de #lookupModes lookupModes.

Public
Obsoletos.

Máscara de un solo bit que representa public el acceso, que puede contribuir al resultado de #lookupModes lookupModes.

Propiedades

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
JniPeerMembers

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

PeerReference

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)

Métodos

Bind(Object, String, MethodType)

Genera un identificador de método enlazado en tiempo de ejecución para un método no estático.

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Dispose()

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
Dispose(Boolean)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
FindConstructor(Class, MethodType)

Genera un identificador de método que crea un objeto y lo inicializa mediante el constructor del tipo especificado.

FindGetter(Class, String, Class)

Genera un identificador de método que proporciona acceso de lectura a un campo no estático.

FindSetter(Class, String, Class)

Genera un identificador de método que proporciona acceso de escritura a un campo no estático.

FindSpecial(Class, String, MethodType, Class)

Genera un identificador de método enlazado en tiempo de ejecución para un método virtual.

FindStatic(Class, String, MethodType)

Genera un identificador de método para un método estático.

FindStaticGetter(Class, String, Class)

Genera un identificador de método que proporciona acceso de lectura a un campo estático.

FindStaticSetter(Class, String, Class)

Genera un identificador de método que proporciona acceso de escritura a un campo estático.

FindStaticVarHandle(Class, String, Class)

Genera un varHandle que proporciona acceso a un campo name estático de tipo type declarado en una clase de tipo decl.

FindVarHandle(Class, String, Class)

Genera un varHandle que proporciona acceso a un campo name no estático de tipo type declarado en una clase de tipo recv.

FindVirtual(Class, String, MethodType)

Genera un identificador de método para un método virtual.

GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
In(Class)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

JavaFinalize()

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
LookupClass()

Indica qué clase está realizando la búsqueda.

LookupModes()

Indica qué clases de protección de acceso de los miembros puede producir este objeto de búsqueda.

Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
RevealDirect(MethodHandle)

Descifra un identificador de método directo creado por este objeto de búsqueda o uno similar.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
ToArray<T>()

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
Unreflect(Method)

Convierte un identificador de método directo en m, si la clase de búsqueda tiene permiso.

UnreflectConstructor(Constructor)

Genera un identificador de método para un constructor reflejado.

UnreflectGetter(Field)

Genera un identificador de método que proporciona acceso de lectura a un campo reflejado.

UnreflectSetter(Field)

Genera un identificador de método que proporciona acceso de escritura a un campo reflejado.

UnreflectSpecial(Method, Class)

Genera un identificador de método para un método reflejado.

UnreflectVarHandle(Field)

Genera un varHandle que proporciona acceso a un campo f reflejado de tipo T declarado en una clase de tipo R.

UnregisterFromRuntime()

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

IJavaPeerable.Disposed()

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
IJavaPeerable.Finalized()

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

(Heredado de Object)

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)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

GetJniTypeName(IJavaPeerable)

Un <objeto< de búsqueda em>es> un generador para crear identificadores de método, cuando la creación requiere la comprobación de acceso.

Se aplica a