Java泛型中的独立类型参数

Java泛型中的独立类型参数,java,generics,types,java-8,Java,Generics,Types,Java 8,Java泛型类型的类型参数部分位于泛型类名之后。例如: class name<T1, T2, ..., Tn> { /* ... */ } default <U> Comparator<T> thenComparing( Function<? super T, ? extends U> keyExtractor, Comparator<? super U> keyComparator) 类名{/*…*

Java泛型类型的类型参数部分位于泛型类名之后。例如:

class name<T1, T2, ..., Tn> { /* ... */ }
default <U> Comparator<T> thenComparing(
        Function<? super T, ? extends U> keyExtractor,
        Comparator<? super U> keyComparator)
类名{/*…*/}
一旦你掌握了窍门,这是非常直观的。然而,在
Comparator
的默认接口方法中看到一些独立的类型参数部分,我感到十分困惑。例如:

class name<T1, T2, ..., Tn> { /* ... */ }
default <U> Comparator<T> thenComparing(
        Function<? super T, ? extends U> keyExtractor,
        Comparator<? super U> keyComparator)
默认比较器(

函数它引入类型参数本身。如果要在不使用它的情况下编写方法签名:

Comparator<T> thenComparing(
        Function<? super T, ? extends U> keyExtractor,
        Comparator<? super U> keyComparator)
比较器(
函数
U
是一个方法泛型类型参数。在Java中,不仅类可能有泛型类型参数,方法也可能有泛型类型参数……要详细了解问题,不是方法是否可以有泛型类型参数(当然可以!),问题是关于独立类型参数。独立类型参数正是方法类型参数。这是Java中向方法声明泛型类型参数的语法。您需要在某处声明它们,以便方法参数可以具有与类的泛型类型不同的泛型类型。相关: