【发布时间】:2017-08-17 07:16:46
【问题描述】:
我还在学习函数式接口。我想知道为什么我可以将UnaryOperator 链接到Function 的末尾,但不能将IntUnaryOperator 链接到同一函数的末尾。
UnaryOperator <String> twoOfMe = s -> s + s;
Function <String, Integer> convertMe = s -> Integer.parseInt (s);
UnaryOperator <Integer> twiceMe = n -> 2*n;
IntUnaryOperator doubleMe = n -> 2*n;
int a = twoOfMe.andThen(convertMe).andThen(twiceMe).apply ("2");
int b = twoOfMe.andThen(convertMe).andThen(doubleMe).apply ("2");
int a 可与 twiceMe 一起使用,但 int b 不适用于 doubleMe。
谢谢
编辑: 它说不兼容的类型。必需的整数。找到 java.lang.Object
【问题讨论】:
-
“不起作用”是什么意思?例外 ?警告 ?不是预期的结果?
-
只是因为 andThen() 将 Function 作为参数,而 UnaryOperator 扩展了 Function,但 IntUnaryOperator 没有。
标签: java lambda unary-operator