Sandeep:
La sección de parámetros de tipo de Java tipos genéricos sigue el nombre de la clase genérica. Por ejemplo:
class name<T1, T2, ..., Tn> { /* ... */ }
Es bastante intuitivo una vez que se obtiene una caída de ella. Sin embargo, estoy totalmente confundido para ver algunas secciones de parámetros de tipo independiente en los métodos de la interfaz por defecto de Comparator<T>
. Por ejemplo:
default <U> Comparator<T> thenComparing(
Function<? super T, ? extends U> keyExtractor,
Comparator<? super U> keyComparator)
Es evidente que el método se vuelve una especie de objeto de comparación, pero ¿cómo explica la independiente <U>
en los términos en inglés?
Andrónico:
Se introduce el tipo de parámetro en sí. Si tuviera que escribir la firma del método sin ella:
Comparator<T> thenComparing(
Function<? super T, ? extends U> keyExtractor,
Comparator<? super U> keyComparator)
que significaría, debe existir algún tipo concreto llamado U
visible para el método.