Génériques Java - Limites multiples

Un paramètre de type peut avoir plusieurs limites.

Syntaxe

public static <T extends Number & Comparable<T>> T maximum(T x, T y, T z)

  • maximum - maximum est une méthode générique.

  • T- Le paramètre de type générique passé à la méthode générique. Cela peut prendre n'importe quel objet.

La description

Le T est un paramètre de type passé à la classe générique Box et doit être un sous-type de la classe Number et doit implémenter l'interface Comparable. Dans le cas où une classe est passée comme liée, elle doit être transmise en premier avant l'interface, sinon une erreur de compilation se produira.

Exemple

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix.

package com.tutorialspoint;

public class GenericsTester {
   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 ));
   }

   public static <T extends Number 
      & Comparable<T>> T maximum(T x, T y, T z) {
      T max = x;      
      if(y.compareTo(max) > 0) {
         max = y;   
      }

      if(z.compareTo(max) > 0) {
         max = z;                    
      }
      return max;      
   }

   // Compiler throws error in case of below declaration
   /* public static <T extends Comparable<T> 
      & Number> T maximum1(T x, T y, T z) {
      T max = x;      
      if(y.compareTo(max) > 0) {
         max = y;   
      }

      if(z.compareTo(max) > 0) {
         max = z;                    
      }
      return max;   
   }*/
}

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