为什么Java 8中没有原始BiConsumer?

Upul Doluweera

我是Java 8的新手,我找不到任何原始BiConsumer(IntBiConsumer等),但是有一个ToIntBiFunction,它是BiFunction的原始特化对象。还有一个与ToIntBiFunction相同的IntBinaryOperator。

BiConsumer<Integer,String> wrappedBiConsumer = (i,s) -> System.out.printf("Consume %d %s \n",i,s);
ToIntBiFunction<String,String> toIntFunction = (a,b) -> a.length()* b.length();
  1. 甲骨文没有为Java8提供IntBiConsumer的原因是什么?
  2. 为什么有两个接口,例如“ IntBinaryOperator”和“ ToIntBiFunction”,而不是一个接口,例如“ IntBiFunction”?(如果它们有不同的用途,仍然可以从同一个父IntBiFunction扩展它们)

我很确定他们有充分的理由设计这种方式,请让我理解它。

插口

我看不到排除背后有任何特定的原因IntBiConsumer@FunctionalInterface如果需要的话,您可以轻松地实现它。我想这是对我们没有同样的原因TriFunctionTriConsumer接口。

不要混合IntBinaryOperator使用ToIntBiFunction(int, int) -> int前者是类型的函数,而后者是形式(T, U) -> int因此,后者最多可能是,(Integer, Integer) -> int但这会导致对象内部的基元装箱,而这对执行者来说远非如此。IntBinaryOperator,而不是将它们拆箱,这在需要更高性能时很有用(二进制int函数就是这种情况)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章