Idioma

MethodHandles.Lookup.Bind(Object, String, MethodType) Método

Definição

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.)

Documentação Java para java.lang.invoke.MethodHandles.Lookup.bind(java.lang.Object, java.lang.String, java.lang.invoke.MethodType).

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.

Aplica-se a