我在下面的代码中使用函数接口有一个问题。这会将字符串转换为整数,并将结果整数转换回String。
Function<String, Integer> toInteger = Integer::valueOf;
Function<String, String> backToString = toInteger.andThen(String::valueOf);
我希望backToString的类型参数为<Integer, String>
而不是<String, String>
。这是因为,我们将toInteger函数的整数结果传递给String :: valueOf方法。
请解释。
答案 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);