Java Generics - Upper Bounded Wildcards

Das Fragezeichen (?), Das den Platzhalter darstellt, steht für einen unbekannten Typ in Generika. Es kann vorkommen, dass Sie die Arten von Typen einschränken möchten, die an einen Typparameter übergeben werden dürfen. Beispielsweise möchte eine Methode, die mit Zahlen arbeitet, möglicherweise nur Instanzen von Number oder deren Unterklassen akzeptieren.

Um einen Wildcard-Parameter mit oberen Grenzen zu deklarieren, listen Sie das? Auf, gefolgt vom Schlüsselwort extens, gefolgt von seiner oberen Grenze.

Beispiel

Das folgende Beispiel zeigt, wie Extend verwendet wird, um einen Platzhalter für die obere Grenze anzugeben.

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

Dies führt zu folgendem Ergebnis:

Ausgabe

sum = 6.0
sum = 7.0