54 votes

Type générique en tant que paramètre dans la méthode Java

Pensez-vous qu'il est possible de créer quelque chose de similaire à cela ?

private ArrayList increaseSizeArray(ArrayList array_test, GenericClass) {
    array_test.add(new GenericObject()); // instance of GenericClass
    return array_test;
}

102voto

Chris Jester-Young Points 102876

Oui, vous pouvez.

private static <T> List<T> pushBack(List<T> list, Class<T> typeKey) throws Exception {
    list.add(typeKey.getConstructor().newInstance());
    return list;
}

Exemple d'utilisation :

List<String> strings = new ArrayList<String>();
pushBack(strings, String.class);

12voto

Aarjav Points 495

Ancienne question mais j'imagine que c'est la façon préférée de le faire en java8+

public <T> ArrayList<T> dynamicAdd(ArrayList<T> list, Supplier<T> supplier) {
  list.add(supplier.get());
  return list;
}

et il pourrait être utilisé comme ceci :

AtomicInteger counter = ...;
ArrayList<Integer> list = ...;

dynamicAdd(list, counter::incrementAndGet);

ceci ajoutera un nombre à la liste, obtenant la valeur de la méthode incrementAndGet d'AtomicInteger

Également possible d'utiliser des constructeurs comme références de méthode comme ceci : MyType::new

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X