MethodHandles.Lookup.Bind(Object, String, MethodType) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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).
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.