Condividi tramite


MethodHandles.Lookup.FindConstructor(Class, MethodType) Metodo

Definizione

Produce un handle di metodo che crea un oggetto e lo inizializza utilizzando il costruttore del tipo specificato.

[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

Parametri

refc
Class

classe o interfaccia a cui si accede al metodo

type
MethodType

il tipo del metodo, con l'argomento ricevitore omesso e un tipo restituito void

Restituisce

handle del metodo desiderato

Attributi

Commenti

Produce un handle di metodo che crea un oggetto e lo inizializza utilizzando il costruttore del tipo specificato. I tipi di parametro dell'handle di metodo saranno quelli del costruttore, mentre il tipo restituito sarà un riferimento alla classe del costruttore. Il costruttore e tutti i relativi tipi di argomento devono essere accessibili all'oggetto di ricerca.

Il tipo richiesto deve avere un tipo restituito .void Questo comportamento è coerente con il trattamento di JVM dei descrittori di tipi di costruttore.

L'handle del metodo restituito avrà l'arità della variabile MethodHandle#asVarargsCollector se e solo se è impostato il bit del modificatore di arità della variabile del costruttore (0x0080).

Se viene richiamato l'handle del metodo restituito, la classe del costruttore verrà inizializzata, se non è già stata inizializzata.

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

Documentazione java per java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a