Java Generics - Comodines delimitados superiores

El signo de interrogación (?), Representa el comodín, significa tipo desconocido en genéricos. Puede haber ocasiones en las que desee restringir los tipos de tipos que se pueden pasar a un parámetro de tipo. Por ejemplo, es posible que un método que opera con números solo desee aceptar instancias de Number o sus subclases.

Para declarar un parámetro comodín delimitado superior, enumere el?, Seguido de la palabra clave extiende, seguido de su límite superior.

Ejemplo

El siguiente ejemplo ilustra cómo se utiliza la extensión para especificar un comodín de límite superior.

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

Esto producirá el siguiente resultado:

Salida

sum = 6.0
sum = 7.0