IMethodHandleInfo Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Uma referência simbólica obtida pela quebra de um identificador de método direto em suas partes simbólicas consitutent.
[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
- Implementações
Comentários
Uma referência simbólica obtida pela quebra de um identificador de método direto em suas partes simbólicas consitutent. Para quebrar um identificador de método direto, chame 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. O método, construtor ou campo referenciado por um identificador de método direto é chamado de <>membro</em> subjacente. Os identificadores de método direto podem ser obtidos de qualquer uma dessas maneiras: <ul><li>Executando uma instrução ldc em uma CONSTANT_MethodHandle constante. (Consulte o Java Especificação da Máquina Virtual, seções 4.4.8 e 5.4.3.) <li>Chamando um dos Métodos de Fábrica de Pesquisa, comoLookup#findVirtual Lookup.findVirtual, para resolver uma referência simbólica em um identificador de método. Uma referência simbólica consiste em uma classe, uma cadeia de caracteres de nome e um tipo.
<li>Chamando o método Lookup#unreflect Lookup.unreflect de fábrica ou Lookup#unreflectSpecial Lookup.unreflectSpecial convertendo um Method em um identificador de método.
<li>Chamando o método Lookup#unreflectConstructor Lookup.unreflectConstructor de fábrica para converter um Constructor em um identificador de método.
<li>Chamando o método Lookup#unreflectGetter Lookup.unreflectGetter de fábrica ou Lookup#unreflectSetter Lookup.unreflectSetter convertendo um Field em um identificador de método.
</ul>
<h1>Restrições em Cracking</h1> Dado um objeto adequado Lookup , é possível quebrar qualquer identificador de método direto para recuperar uma referência simbólica para o método, construtor ou campo subjacente. A quebra deve ser feita por meio de um Lookup objeto equivalente ao que criou o identificador do método de destino ou que tenha permissões de acesso suficientes para recriar um identificador de método equivalente.
Se o método subjacente for sensível ao chamador, o identificador de método direto terá sido "associado" a uma determinada classe de chamador, a classe de pesquisa java.lang.invoke.MethodHandles.Lookup#lookupClass() do objeto de pesquisa usado para criá-lo. A quebra desse identificador de método com uma classe de pesquisa diferente falhará mesmo que o método subjacente seja público (como Class.forName).
O requisito de correspondência de objeto de pesquisa fornece um comportamento de "falha rápida" para programas que, de outra forma, podem confiar na revelação errônea de um identificador de método com informações simbólicas (ou associação de chamador) de um escopo inesperado. Use java.lang.invoke.MethodHandles#reflectAs para substituir essa limitação.
<h1>"refkinds">Tipos de referência</h1 Os métodos de fábrica de> pesquisa correspondem a todos os casos de uso principais para métodos, construtores e campos. Esses casos de uso podem ser diferenciados usando pequenos inteiros da seguinte maneira: <table border=1 cellpadding=5 summary="reference kinds"><tr><th>reference kind</th th><>descriptive name</th th><>scope</th th><>member</th th><th>behavior</th></tr><tr><td>1</td td><>REF_getField</td td><>class</td td/td><td>FT f;</td td><>(T) this.f;</td></tr><tr><td>2</td td><>REF_getStatic</td td><>class ou interface</td td><>static<br>FT f;</td td><>(T) C.f;</td/td></tr><td><>3</td td><>REF_putField</td><td>class<><>FT f;</td td><>this.f = x;/td</td></tr tr><td><>/td4td<><>/td tdREF_putStatic<><>/td tdclass<><>brstatic<>/td tdFT f;<><>/tdC.f = arg;</tr><tr><td><>/td td5<><>/td tdREF_invokeVirtual<><>/tdclass<td><>/td tdT m(A*);<><>/td(T) this.m(arg*);</tr tr><><td><>/td6td<><>/td tdREF_invokeStatic<>< ou >class/tdinterface<td><>brstatic<>/td tdT m(A*);<><>/td(T) C.m(arg*);</tr><tr><td><>/td td7<><>/td tdREF_invokeSpecial<>< ou >class/td tdinterface<><>/td tdT m(A*);<><>/td(T) super.m(arg*);</tr ><><tr><td>8</td><td>REF_newInvokeSpecial</td><>class</td td><>C(A*);</td td><>new C(arg*);/td</td></tr><tr><td>9</td td><>REF_invokeInterface</td td><>interface</td><td>T m(A*);</td><>(T) this.m(arg*);</td></tr></table>
Adicionado em 1.8.
Documentação Java para java.lang.invoke.MethodHandleInfo.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.
Propriedades
| Nome | Description |
|---|---|
| DeclaringClass |
Retorna a classe na qual o membro subjacente do identificador do método rachado foi definido. |
| Handle |
Obtém o valor JNI do objeto Android subjacente. (Herdado de IJavaObject) |
| IsVarArgs |
Determina se o membro subjacente era um método de arity variável ou construtor. |
| JniIdentityHashCode |
Retorna o valor da |
| JniManagedPeerState |
Estado do par gerenciado. (Herdado de IJavaPeerable) |
| JniObjectReferenceControlBlock |
Uma referência simbólica obtida pela quebra de um identificador de método direto em suas partes simbólicas consitutent. (Herdado de IJavaPeerable) |
| JniPeerMembers |
Acesso ao membro e suporte à invocação. (Herdado de IJavaPeerable) |
| MethodType |
Retorna o tipo nominal da referência simbólica rachada, expressa como um tipo de método. |
| Modifiers |
Retorna os modificadores de acesso do membro subjacente. |
| Name |
Retorna o nome do membro subjacente do identificador do método rachado. |
| PeerReference |
Retorna uma JniObjectReference das instâncias de objeto Java encapsuladas. (Herdado de IJavaPeerable) |
| ReferenceKind |
Retorna o tipo de referência do identificador de método rachado, que, por sua vez, determina se o membro subjacente do identificador de método era um construtor, método ou campo. |
Métodos
| Nome | Description |
|---|---|
| Disposed() |
Chamado quando a instância foi descartada. (Herdado de IJavaPeerable) |
| DisposeUnlessReferenced() |
Se não houver referências pendentes a essa instância, então chamará |
| Finalized() |
Chamado quando a instância foi finalizada. (Herdado de IJavaPeerable) |
| ReferenceKindToString(ReferenceKind) |
Retorna o nome descritivo do tipo de referência fornecido, conforme definido na tabela acima. |
| RefKindIsField(ReferenceKind) |
Este membro foi preterido. |
| RefKindIsValid(ReferenceKind) |
Este membro foi preterido. |
| RefKindName(ReferenceKind) |
Este membro foi preterido. |
| ReflectAs(Class, MethodHandles+Lookup) |
Reflete o membro subjacente como um método, construtor ou objeto de campo. |
| SetJniIdentityHashCode(Int32) |
Defina o valor retornado por |
| SetJniManagedPeerState(JniManagedPeerStates) |
Uma referência simbólica obtida pela quebra de um identificador de método direto em suas partes simbólicas consitutent. (Herdado de IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
Defina o valor retornado por |
| ToString(ReferenceKind, Class, String, MethodType) |
Retorna uma representação de cadeia de caracteres para um |
| UnregisterFromRuntime() |
Cancele o registro dessa instância para que o runtime não a retorne de invocações futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Herdado de IJavaPeerable) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo verificada pelo tempo de execução do Android. |
| JavaCast<TResult>(IJavaObject) |
Uma referência simbólica obtida pela quebra de um identificador de método direto em suas partes simbólicas consitutent. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |