【问题标题】:Kotlin like selector in JavaJava 中的 Kotlin 类似选择器
【发布时间】:2019-07-20 08:27:37
【问题描述】:

我在 Kotlin 中有这段代码,如何用 Java 编写?

typealias ResolutionSelector = Iterable<Resolution>.() -> Resolution?

/**
 * @return Selector function which always provides the biggest resolution.
 */
fun highestResolution(): ResolutionSelector = { maxBy(Resolution::area) }

【问题讨论】:

  • 你为什么要这样做?
  • 将自定义选择器添加到列表中。
  • @AVEbrahimi 我对 Kotlin 有点无知,你能用文字描述一下吗?它有什么作用?

标签: java kotlin collections iterable


【解决方案1】:

不幸的是,Java 没有类型别名。
我认为你能拥有的最好的是

resolutions.stream()
           .max(Comparator.comparingInt(Resolution::getArea));

Stream#max 确实接受 Comparator&lt;? super T&gt; comparator,您可以提前构建它,然后作为输入传递。

所以你可以存储一个 lambda 函数 比如

final Comparator<Resolution> resolutionComparator = (r1, r2) -> /* Comparison logic */;

编辑:我用var 发布的示例无法运行,因为编译器无法推断变量的实际类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多