MethodHandle.AsCollector 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.
Surcharges
AsCollector(Class, Int32) |
Crée un <>handle de méthode em array-collecting</em>, qui accepte un nombre donné d’arguments positionnels de fin et les collecte dans un argument de tableau. |
AsCollector(Int32, Class, Int32) |
Rend un <>handle de méthode de< collecte de tableau/em em>, qui accepte un nombre donné d’arguments positionnels commençant à une position donnée et les collecte dans un argument de tableau. |
AsCollector(Class, Int32)
Crée un <>handle de méthode em array-collecting</em>, qui accepte un nombre donné d’arguments positionnels de fin et les collecte dans un argument de tableau.
[Android.Runtime.Register("asCollector", "(Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;", "GetAsCollector_Ljava_lang_Class_IHandler", ApiSince=26)]
public virtual Java.Lang.Invoke.MethodHandle? AsCollector (Java.Lang.Class? arrayType, int arrayLength);
[<Android.Runtime.Register("asCollector", "(Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;", "GetAsCollector_Ljava_lang_Class_IHandler", ApiSince=26)>]
abstract member AsCollector : Java.Lang.Class * int -> Java.Lang.Invoke.MethodHandle
override this.AsCollector : Java.Lang.Class * int -> Java.Lang.Invoke.MethodHandle
Paramètres
- arrayType
- Class
souvent Object[]
, le type de l’argument de tableau qui collecte les arguments
- arrayLength
- Int32
nombre d’arguments à collecter dans un nouvel argument de tableau
Retours
un nouveau handle de méthode qui collecte un argument de fin dans un tableau, avant d’appeler le handle de méthode d’origine
- Attributs
Remarques
Crée un <>handle de méthode em array-collecting</em>, qui accepte un nombre donné d’arguments positionnels de fin et les collecte dans un argument de tableau. Le nouveau handle de méthode s’adapte, en tant que cible, à la poignée de méthode actuelle. Le type de l’adaptateur est identique au type de la cible, sauf qu’un seul paramètre de fin (généralement de type arrayType
) est remplacé par arrayLength
des paramètres dont le type est le type d’élément de arrayType
.
Si le type de tableau diffère du type d’argument final sur la cible d’origine, la cible d’origine est adaptée pour prendre directement le type de tableau, comme par un appel à #asType asType
.
Lorsqu’il est appelé, l’adaptateur remplace ses arguments de fin arrayLength
par un seul nouveau tableau de type arrayType
, dont les éléments comprennent (dans l’ordre) les arguments remplacés. Enfin, la cible est appelée. Ce que la cible retourne finalement est retourné inchangé par l’adaptateur.
(Le tableau peut également être une constante partagée lorsqu’elle arrayLength
est égale à zéro.)
(<em>Remarque :</em> Le arrayType
paramètre est souvent identique au dernier type de paramètre de la cible d’origine. Il s’agit d’un argument explicite pour la symétrie avec asSpreader
, et également pour permettre à la cible d’utiliser un simple Object
comme dernier type de paramètre.)
Pour créer un adaptateur de collecte qui n’est pas limité à un nombre particulier d’arguments collectés, utilisez #asVarargsCollector asVarargsCollector
à la place.
Voici quelques exemples de handles de méthode de collecte de tableaux : <blockquote>
{@code
MethodHandle deepToString = publicLookup()
.findStatic(Arrays.class, "deepToString", methodType(String.class, Object[].class));
assertEquals("[won]", (String) deepToString.invokeExact(new Object[]{"won"}));
MethodHandle ts1 = deepToString.asCollector(Object[].class, 1);
assertEquals(methodType(String.class, Object.class), ts1.type());
//assertEquals("[won]", (String) ts1.invokeExact( new Object[]{"won"})); //FAIL
assertEquals("[[won]]", (String) ts1.invokeExact((Object) new Object[]{"won"}));
// arrayType can be a subtype of Object[]
MethodHandle ts2 = deepToString.asCollector(String[].class, 2);
assertEquals(methodType(String.class, String.class, String.class), ts2.type());
assertEquals("[two, too]", (String) ts2.invokeExact("two", "too"));
MethodHandle ts0 = deepToString.asCollector(Object[].class, 0);
assertEquals("[]", (String) ts0.invokeExact());
// collectors can be nested, Lisp-style
MethodHandle ts22 = deepToString.asCollector(Object[].class, 3).asCollector(String[].class, 2);
assertEquals("[A, B, [C, D]]", ((String) ts22.invokeExact((Object)'A', (Object)"B", "C", "D")));
// arrayType can be any primitive array type
MethodHandle bytesToString = publicLookup()
.findStatic(Arrays.class, "toString", methodType(String.class, byte[].class))
.asCollector(byte[].class, 3);
assertEquals("[1, 2, 3]", (String) bytesToString.invokeExact((byte)1, (byte)2, (byte)3));
MethodHandle longsToString = publicLookup()
.findStatic(Arrays.class, "toString", methodType(String.class, long[].class))
.asCollector(long[].class, 1);
assertEquals("[123]", (String) longsToString.invokeExact((long)123));
}
</blockquote>
Documentation Java pour java.lang.invoke.MethodHandle.asCollector(java.lang.Class<?>, int)
.
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.
S’applique à
AsCollector(Int32, Class, Int32)
Rend un <>handle de méthode de< collecte de tableau/em em>, qui accepte un nombre donné d’arguments positionnels commençant à une position donnée et les collecte dans un argument de tableau.
[Android.Runtime.Register("asCollector", "(ILjava/lang/Class;I)Ljava/lang/invoke/MethodHandle;", "GetAsCollector_ILjava_lang_Class_IHandler", ApiSince=33)]
public virtual Java.Lang.Invoke.MethodHandle? AsCollector (int collectArgPos, Java.Lang.Class? arrayType, int arrayLength);
[<Android.Runtime.Register("asCollector", "(ILjava/lang/Class;I)Ljava/lang/invoke/MethodHandle;", "GetAsCollector_ILjava_lang_Class_IHandler", ApiSince=33)>]
abstract member AsCollector : int * Java.Lang.Class * int -> Java.Lang.Invoke.MethodHandle
override this.AsCollector : int * Java.Lang.Class * int -> Java.Lang.Invoke.MethodHandle
Paramètres
- collectArgPos
- Int32
position de base zéro dans la liste de paramètres à laquelle commencer la collecte.
- arrayType
- Class
souvent Object[]
, le type de l’argument de tableau qui collecte les arguments
- arrayLength
- Int32
nombre d’arguments à collecter dans un nouvel argument de tableau
Retours
un nouveau handle de méthode qui collecte certains arguments dans un tableau, avant d’appeler le handle de méthode d’origine
- Attributs
Remarques
Rend un <>handle de méthode de< collecte de tableau/em em>, qui accepte un nombre donné d’arguments positionnels commençant à une position donnée et les collecte dans un argument de tableau. Le nouveau handle de méthode s’adapte, en tant que cible, à la poignée de méthode actuelle. Le type de l’adaptateur sera identique au type de la cible, sauf que le paramètre à la position indiquée par (généralement de typearrayType
) est remplacé par collectArgPos
arrayLength
les paramètres dont le type est le type d’élément .arrayType
Cette méthode se comporte très bien comme #asCollector(Class, int)
, mais diffère de ce que son collectArgPos
argument indique à quelle position dans les arguments de liste de paramètres doit être collectée. Cet index est de base zéro.
Ajouté dans 9.
Documentation Java pour java.lang.invoke.MethodHandle.asCollector(int, java.lang.Class<?>, int)
.
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.