Anhang A. Generics und Java 8

Hintergrund

Generische Funktionen wurden in Java bereits in Version J2SE 1.5 eingeführt, aber die meisten Java-Entwickler haben nur das Nötigste darüber gelernt, um ihre Arbeit zu erledigen. Mit der Einführung von Java 8 sind die Javadocs plötzlich voll mit Methodensignaturen wie dieser von java.util.Map.Entry:

static <K extends Comparable<? super K>,V> Comparator<Map.Entry<K,V>>
    comparingByKey()

oder dieses hier von java.util.Comparator:

static <T,U extends Comparable<? super U>> Comparator<T> comparing(
    Function<? super T,? extends U> keyExtractor)

oder sogar dieses Monster von java.util.stream.Collectors:

static <T,K,D,A,M extends Map<K, D>> Collector<T,?,M> groupingBy(
    Function<? super T,? extends K> classifier, Supplier<M> mapFactory,
    Collector<? super T,A,D> downstream)

Das Minimum zu verstehen, reicht nicht mehr aus. Dieser Anhang soll dir helfen, ähnliche Signaturen in verständliche Teile zu zerlegen, damit du die API produktiv nutzen kannst.

Was jeder weiß

Wenn du eine Sammlung wie List oder Set verwenden willst, gibst du den Typ der enthaltenen Elemente an, indem du ihren Klassennamen in spitze Klammern setzt:

List<String> strings = new ArrayList<String>();
Set<Employee> employees = new HashSet<Employee>();
Hinweis

Java 7 hat die Syntax durch die Einführung des Rautenoperators, der in den folgenden Codebeispielen verwendet wird, etwas vereinfacht. Da der Verweis auf der linken Seite die Sammlung zusammen mit dem enthaltenen Typ deklariert, ...

Get Moderne Java-Rezepte now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.