Почему LongSummaryStatistics внедряет IntConsumer? - PullRequest
0 голосов
/ 02 января 2019

Почему LongSummaryStatistics реализует IntConsumer, когда существует IntSummaryStatistics, который также реализует IntConsumer?

1 Ответ

0 голосов
/ 02 января 2019

LongSummaryStatistics реализует IntConsumer для того, чтобы он мог принимать значения int, а также значения long.

Например, это позволяет передать его методу, требующему IntConsumer для абстрактного потребления int данных:

LongSummaryStatistics lss = new LongSummaryStatistics();
someMethod(lss);

void someMethod(IntConsumer consumer) { ... }

Нет реальной причины, по которой LongSummaryStatistics нельзя использовать для этой цели: int всегда можно расширить до longбез потерь.Однако система типов не позволяет использовать lss в качестве параметра для someMethod, если LongSummaryStatistics не реализует IntConsumer напрямую.

Правда, вы можете сделать это без реализации интерфейса, используялямбда:

someMethod(i -> lss.consume(i));

, но немного лучше использовать ссылку напрямую.

...