Génériques Java - Paramètres de type borné

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. C'est à cela que servent les paramètres de type borné.

Pour déclarer un paramètre de type borné, répertoriez le nom du paramètre de type, suivi du mot clé extend, suivi de sa limite supérieure.

Exemple

L'exemple suivant illustre comment étend est utilisé dans un sens général pour signifier soit «étend» (comme dans les classes) soit «implémente» (comme dans les interfaces). Cet exemple est une méthode générique pour renvoyer le plus grand des trois objets comparables -

public class MaximumTest {
   // determines the largest of three Comparable objects
   
   public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
      T max = x;   // assume x is initially the largest
      
      if(y.compareTo(max) > 0) {
         max = y;   // y is the largest so far
      }
      
      if(z.compareTo(max) > 0) {
         max = z;   // z is the largest now                 
      }
      return max;   // returns the largest object   
   }
   
   public static void main(String args[]) {
      System.out.printf("Max of %d, %d and %d is %d\n\n", 
         3, 4, 5, maximum( 3, 4, 5 ));

      System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n",
         6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));

      System.out.printf("Max of %s, %s and %s is %s\n","pear",
         "apple", "orange", maximum("pear", "apple", "orange"));
   }
}

Cela produira le résultat suivant -

Production

Max of 3, 4 and 5 is 5

Max of 6.6,8.8 and 7.7 is 8.8

Max of pear, apple and orange is pear