为什么 Comparator.reversed() 使用 Lambda 会失败
使用 Comparator.comparing 与 lambda 表达式对 User 对象列表进行排序时,可能会出现错误:
userList.sort(Comparator.comparing(u -> u.getName()).reversed()); // Compiler error
这是由于限制编译器的类型推断机制。编译器很难确定 lambda 参数“u”的类型。
在以下示例中,使用方法引用允许编译器推断目标类型并避免错误:
userList.sort(Comparator.comparing(User::getName).reversed()); // works
方法引用提供了额外的类型信息,编译器使用这些信息来推断 'u' 作为 User 的类型。
避免使用 a 时出现错误lambda,您可以显式指定 lambda 参数的类型:
userList.sort(Comparator.comparing((User u) -> u.getName()).reversed());
在未来的编译器版本中,此问题可能会得到解决,错误可能不再发生。
以上是为什么 Java 排序中的 Lambda 表达式'Comparator.reversed()”失败?的详细内容。更多信息请关注PHP中文网其他相关文章!