当存在同时实现LongSummaryStatistics
的IntConsumer
时,为什么IntSummaryStatistics
实现IntConsumer
呢?
最佳答案
LongSummaryStatistics
实现IntConsumer
,以便它可以接受int
值以及long
值。
例如,这允许您将其传递给需要IntConsumer
的方法,以便抽象地使用一些int
数据:
LongSummaryStatistics lss = new LongSummaryStatistics();
someMethod(lss);
void someMethod(IntConsumer consumer) { ... }
没有真正的理由为什么不应为此目的使用
LongSummaryStatistics
:可以始终将int
扩展为long
而不会丢失。但是,类型系统将不允许将lss
用作someMethod
的参数,除非LongSummaryStatistics
直接实现IntConsumer
。没错,您可以使用lambda来执行此操作而无需实现接口(interface):
someMethod(i -> lss.consume(i));
但是直接使用引用有点整洁。