MethodHandles.Lookup.FindConstructor(Class, MethodType) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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>
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.