周末我在阅读一些关于 Java 14 预览特性的记录。我不想问这个问题,因为它似乎是 Brian Goetz 的代码,我们都知道这个人是谁,代表 Java 生态系统,但这一直在我的脑海里,我知道它会学习为了我。
是这样的。
record PlayerScore(Player player, Score score) {
// convenience constructor for use by Stream::map
PlayerScore(Player player) { this(player, getScore(player)); }
}
List<Player> topN
= players.stream()
.map(PlayerScore::new)
.sorted(Comparator.comparingInt(PlayerScore::score))
.limit(N)
.map(PlayerScore::player)
.collect(toList());
我假设这条线返回一个分数参考。
getScore(player)
也许在我理解它试图做什么之前你已经看到了它,但有些东西我不明白。也许我错了。
这条线
.sorted(Comparator.comparingInt(PlayerScore::score))
的APIcomparingInt
是这样的。
public static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor) {
但只要我理解方法参考
PlayerScore::score
从 Records 元组返回 Score 引用对吗?不是整数或导致整数
或者这会使代码编译我认为可能是一个打字错误。
record PlayerScore(Player player, int score) {
// convenience constructor for use by Stream::map
PlayerScore(Player player) { this(player, getScore(player)); }
}
正如我之前所说,根据我的理解,这段代码不会编译;也许我错了。