MethodHandles.Lookup.Bind(Object, String, MethodType) Método
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.
Produz um identificador de método de associação inicial para um método não estático.
[Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle Bind(Java.Lang.Object receiver, string name, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.Bind : Java.Lang.Object * string * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle
Parâmetros
- receiver
- Object
o objeto do qual o método é acessado
- name
- String
o nome do método
- type
- MethodType
o tipo do método, com o argumento receptor omitido
Retornos
o identificador de método desejado
- Atributos
Comentários
Produz um identificador de método de associação inicial para um método não estático. O receptor deve ter um supertipo defc no qual um método do nome e tipo fornecidos é acessível à classe de pesquisa. O método e todos os seus tipos de argumento devem ser acessíveis ao objeto de pesquisa. O tipo do identificador do método será o do método, sem nenhuma inserção de um parâmetro receptor adicional. O receptor determinado será associado ao identificador do método, de modo que cada chamada ao identificador de método invoque o método solicitado no receptor especificado.
O identificador de método retornado terá a aridade da variável MethodHandle#asVarargsCollector se e somente se o bit modificador de aridade variável do método (0x0080) for definido <>e</em> o argumento de matriz à direita não for o único argumento. (Se o argumento de matriz à direita for o único argumento, o valor do receptor fornecido será associado a ele.)
Isso é equivalente ao seguinte código: <blockquote>
{@code
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
...
MethodHandle mh0 = lookup().findVirtual(defc, name, type);
MethodHandle mh1 = mh0.bindTo(receiver);
MethodType mt1 = mh1.type();
if (mh0.isVarargsCollector())
mh1 = mh1.asVarargsCollector(mt1.parameterType(mt1.parameterCount()-1));
return mh1;
}
</blockquote> onde defc está um receiver.getClass() ou um super tipo dessa classe, no qual o método solicitado é acessível à classe de pesquisa. (Observe que bindTo não preserva a aridade variável.)
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.