Compartir a través de


MethodHandles.Lookup.FindConstructor(Class, MethodType) Método

Definición

Genera un identificador de método que crea un objeto y lo inicializa mediante el constructor del tipo especificado.

[Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle FindConstructor (Java.Lang.Class refc, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.FindConstructor : Java.Lang.Class * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Parámetros

refc
Class

clase o interfaz desde la que se accede al método

type
MethodType

el tipo del método, con el argumento receptor omitido y un tipo de valor devuelto void

Devoluciones

el identificador de método deseado

Atributos

Comentarios

Genera un identificador de método que crea un objeto y lo inicializa mediante el constructor del tipo especificado. Los tipos de parámetro del identificador de método serán los del constructor, mientras que el tipo de valor devuelto será una referencia a la clase del constructor. El constructor y todos sus tipos de argumento deben ser accesibles para el objeto de búsqueda.

El tipo solicitado debe tener un tipo de valor devuelto de void. (Esto es coherente con el tratamiento de JVM de descriptores de tipo constructor).

El identificador de método devuelto tendrá la aridad de variables MethodHandle#asVarargsCollector si y solo si se establece el bit modificador de arity de la variable del constructor (0x0080).

Si se invoca el identificador de método devuelto, se inicializará la clase del constructor, si aún no se ha inicializado.

<b>Ejemplo:</b><blockquote>

{@code
            import static java.lang.invoke.MethodHandles.*;
            import static java.lang.invoke.MethodType.*;
            ...
            MethodHandle MH_newArrayList = publicLookup().findConstructor(
              ArrayList.class, methodType(void.class, Collection.class));
            Collection orig = Arrays.asList("x", "y");
            Collection copy = (ArrayList) MH_newArrayList.invokeExact(orig);
            assert(orig != copy);
            assertEquals(orig, copy);
            // a variable-arity constructor:
            MethodHandle MH_newProcessBuilder = publicLookup().findConstructor(
              ProcessBuilder.class, methodType(void.class, String[].class));
            ProcessBuilder pb = (ProcessBuilder)
              MH_newProcessBuilder.invoke("x", "y", "z");
            assertEquals("[x, y, z]", pb.command().toString());
            }

</blockquote>

Documentación de Java para java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a