1

週末、私は Java 14 プレビュー機能の記録について読んでいました。Brian Goetz のコードのように思われるため、この質問をしたくありませんでした。私たちは皆、この人物が誰であり、Java エコシステムを代表するものであることを知っています。私のため。

リンクはこちら。https://www.infoq.com/articles/java-14-feature-spotlight/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=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());

この行は Score 参照を返していると思います。

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)); }
}

前に述べたように、私の理解では、このコードはコンパイルされません。たぶん私は間違っています。

4

1 に答える 1