Generici Java: limiti multipli

Un parametro di tipo può avere più limiti.

Sintassi

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

Dove

  • maximum - il massimo è un metodo generico.

  • T- Il parametro di tipo generico passato al metodo generico. Può accettare qualsiasi oggetto.

Descrizione

La T è un parametro di tipo passato alla classe generica Box e dovrebbe essere un sottotipo della classe Number e deve impiantare l'interfaccia Comparable. Nel caso in cui una classe venga passata come vincolata, dovrebbe essere passata prima dell'interfaccia altrimenti si verificherà un errore in fase di compilazione.

Esempio

Crea il seguente programma java utilizzando qualsiasi editor di tua scelta.

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;   
   }*/
}

Questo produrrà il seguente risultato:

Produzione

Max of 3, 4 and 5 is 5

Max of 6.6,8.8 and 7.7 is 8.8