需要澄清Java 8中的Function interface Type参数

时间:2015-08-06 12:30:29

标签: java java-8

我在下面的代码中使用函数接口有一个问题。这会将字符串转换为整数,并将结果整数转换回String。

Function<String, Integer> toInteger = Integer::valueOf;
Function<String, String> backToString = toInteger.andThen(String::valueOf);

我希望backToString的类型参数为<Integer, String>而不是<String, String>。这是因为,我们将toInteger函数的整数结果传递给String :: valueOf方法。

请解释。

1 个答案:

答案 0 :(得分:5)

backToString结合了两个功能:

首先,它将String输入传递给toInteger,后者返回Integer

然后Integer传递给String::valueOf,后者返回String。因此,backToString接受String并返回String

它也可以写成:

Function<String, Integer> toInteger = Integer::valueOf;
Function<Integer, String> toString = String::valueOf;
Function<String, String> backToString = toInteger.andThen(toString);