【发布时间】:2020-02-09 06:45:11
【问题描述】:
Java 泛型类型的类型参数部分遵循泛型类名。例如:
class name<T1, T2, ..., Tn> { /* ... */ }
一旦掌握了它就会非常直观。但是,在Comparator<T> 的默认接口方法中看到一些独立的类型参数部分,我完全被难住了。例如:
default <U> Comparator<T> thenComparing(
Function<? super T, ? extends U> keyExtractor,
Comparator<? super U> keyComparator)
显然该方法返回了某种比较器对象,但是您如何用英文解释独立的<U>?
【问题讨论】:
-
U是一个方法泛型类型参数。在 Java 中,不仅类可能有泛型类型参数,方法也可能有它们 -
问题不在于方法是否可以具有泛型类型参数(当然可以!),问题在于独立类型参数。
-
独立类型参数就是方法类型参数。这是 Java 中向方法声明泛型类型参数的语法。您需要在某处声明它们,以便方法参数可以具有与类的泛型类型不同的泛型类型。
标签: java generics types java-8