Génériques Java - Caractères génériques à limite supérieure

Le point d'interrogation (?), Représente le caractère générique, représente le type inconnu dans les génériques. Il peut arriver que vous souhaitiez restreindre les types de types autorisés à être transmis à un paramètre de type. Par exemple, une méthode qui opère sur des nombres peut ne souhaiter accepter que des instances de Number ou de ses sous-classes.

Pour déclarer un paramètre Wildcard à limite supérieure, indiquez le?, Suivi du mot clé extend, suivi de sa limite supérieure.

Exemple

L'exemple suivant illustre comment extend est utilisé pour spécifier un caractère générique de limite supérieure.

package com.tutorialspoint;

import java.util.Arrays;
import java.util.List;

public class GenericsTester {

   public static double sum(List<? extends Number> numberlist) {
      double sum = 0.0;
      for (Number n : numberlist) sum += n.doubleValue();
      return sum;
   }

   public static void main(String args[]) {
      List<Integer> integerList = Arrays.asList(1, 2, 3);
      System.out.println("sum = " + sum(integerList));

      List<Double> doubleList = Arrays.asList(1.2, 2.3, 3.5);
      System.out.println("sum = " + sum(doubleList));
   }
}

Cela produira le résultat suivant -

Production

sum = 6.0
sum = 7.0