Partilhar via


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

Definição

Produz um identificador de método que cria um objeto e o inicializa, usando o construtor do 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

A classe ou interface a partir da qual o método é acessado

type
MethodType

o tipo do método, com o argumento receiver omitido e um tipo de retorno void

Retornos

o identificador de método desejado

Atributos

Comentários

Produz um identificador de método que cria um objeto e o inicializa, usando o construtor do tipo especificado. Os tipos de parâmetro do identificador de método serão os do construtor, enquanto o tipo de retorno será uma referência à classe do construtor. O construtor e todos os seus tipos de argumento devem ser acessíveis ao objeto de pesquisa.

O tipo solicitado deve ter um tipo de retorno de void. (Isso é consistente com o tratamento dado pela JVM aos descritores de tipo de construtor.)

O identificador de método retornado terá arity variável MethodHandle#asVarargsCollector se e somente se o bit modificador de aridade variável do construtor (0x0080) estiver definido.

Se o identificador de método retornado for chamado, a classe do construtor será inicializada, se ainda não tiver sido inicializada.

<b>Exemplo:</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>

Documentação Java para java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a