Generici Java - Caratteri jolly delimitati superiori

Il punto interrogativo (?), Rappresenta il carattere jolly, sta per tipo sconosciuto nei generici. A volte potresti voler limitare i tipi di tipi che possono essere passati a un parametro di tipo. Ad esempio, un metodo che opera sui numeri potrebbe voler accettare solo istanze di Number o delle sue sottoclassi.

Per dichiarare un parametro Wildcard delimitato superiore, elenca il?, Seguito dalla parola chiave extends, seguito dal suo limite superiore.

Esempio

L'esempio seguente illustra come viene utilizzato extends per specificare un carattere jolly del limite superiore.

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));
   }
}

Questo produrrà il seguente risultato:

Produzione

sum = 6.0
sum = 7.0