MethodHandles.Lookup.FindConstructor(Class, MethodType) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Produit un handle de méthode qui crée un objet et l’initialise à l’aide du constructeur du type spécifié.
[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
Paramètres
- refc
- Class
la classe ou l’interface à partir de laquelle la méthode est accessible
- type
- MethodType
type de la méthode, avec l’argument récepteur omis et un type de retour void
Retours
handle de méthode souhaité
- Attributs
Remarques
Produit un handle de méthode qui crée un objet et l’initialise à l’aide du constructeur du type spécifié. Les types de paramètres du handle de méthode sont ceux du constructeur, tandis que le type de retour sera une référence à la classe du constructeur. Le constructeur et tous ses types d’arguments doivent être accessibles à l’objet de recherche.
Le type demandé doit avoir un type de retour de void
. (Ceci est cohérent avec le traitement par JVM des descripteurs de type constructeur.)
Le handle de méthode retourné a MethodHandle#asVarargsCollector variable arity si et seulement si le bit du modificateur de variable du constructeur (0x0080
) est défini.
Si le handle de méthode retourné est appelé, la classe du constructeur est initialisée, si elle n’a pas déjà été initialisée.
<b>Example :</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>
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.