小编Jia*_* Li的帖子

Java 8 Comparator比较静态函数

对于Comparator类中的比较源代码

    public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
        Function<? super T, ? extends U> keyExtractor)
    {
      Objects.requireNonNull(keyExtractor);
      return (Comparator<T> & Serializable) (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
    }
Run Code Online (Sandbox Code Playgroud)

我明白之间的差别superextends.我不明白的是,为什么这种方法有它们.有人能举例说明参数看起来像什么时无法实现的Function<T, U> keyExtractor

例如 :

Comparator<Employee> employeeNameComparator = Comparator.comparing(Employee::getName);
Run Code Online (Sandbox Code Playgroud)

也可以使用以下函数定义进行编译

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
    Function<T, U> keyExtractor)
{
  Objects.requireNonNull(keyExtractor);
  return (Comparator<T> & Serializable) (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
}
Run Code Online (Sandbox Code Playgroud)

java generics bounded-wildcard

7
推荐指数
2
解决办法
556
查看次数

标签 统计

bounded-wildcard ×1

generics ×1

java ×1