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

Joh*_*ohn 1 java java-8

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

Function<String, Integer> toInteger = Integer::valueOf;
Function<String, String> backToString = toInteger.andThen(String::valueOf);
Run Code Online (Sandbox Code Playgroud)

我期待backToString的类型参数<Integer, String>代替<String, String>.这是因为,我们将toInteger函数的整数结果传递给String :: valueOf方法.

请解释.

Era*_*ran 5

backToString 结合了两个功能:

首先它将其String输入传递给toInteger,返回一个Integer.

然后Integer传递给String::valueOf它返回a String.因此backToString接受String并返回a String.

它也可以写成:

Function<String, Integer> toInteger = Integer::valueOf;
Function<Integer, String> toString = String::valueOf;
Function<String, String> backToString = toInteger.andThen(toString);
Run Code Online (Sandbox Code Playgroud)