Lenguaje

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

Definición

Genera un identificador de método enlazado en tiempo de ejecución para un método no 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

el objeto desde el que se tiene acceso al método

name
String

el nombre del método

type
MethodType

el tipo del método , con el argumento receiver omitido

Devoluciones

el identificador de método deseado

Atributos

Comentarios

Genera un identificador de método enlazado en tiempo de ejecución para un método no estático. El receptor debe tener un supertipo defc en el que se pueda acceder a un método del nombre y el tipo especificados a la clase de búsqueda. El método y todos sus tipos de argumentos deben ser accesibles para el objeto de búsqueda. El tipo del identificador de método será el del método, sin ninguna inserción de un parámetro receptor adicional. El receptor especificado se enlazará al identificador de método, de modo que cada llamada al identificador de método invocará el método solicitado en el receptor especificado.

El identificador de método devuelto tendrá la aridad de variable MethodHandle#asVarargsCollector si y solo si el bit modificador de arity de la variable del método (0x0080) se establece <em>y</em> el argumento de matriz final no es el único argumento. (Si el argumento de matriz final es el único argumento, el valor del receptor especificado se enlazará a él).

Esto equivale al código siguiente: <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> donde defc es receiver.getClass() o un super tipo de esa clase, en el que el método solicitado es accesible para la clase de búsqueda. (Tenga en cuenta que bindTo no conserva la aridad variable).

Java documentación para java.lang.invoke.MethodHandles.Lookup.bind(java.lang.Object, java.lang.String, java.lang.invoke.MethodType).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a