首页 > Java > java教程 > 为什么 Java 排序中的 Lambda 表达式'Comparator.reversed()”失败?

为什么 Java 排序中的 Lambda 表达式'Comparator.reversed()”失败?

Barbara Streisand
发布: 2024-12-03 21:38:12
原创
566 人浏览过

Why Does `Comparator.reversed()` Fail with Lambda Expressions in Java Sorting?

为什么 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板