如何从静态方法返回Function接口?静态方法中使用Function<String, String>时如何正确返回值?
问题分析与修复方案
你的问题很清晰:你已经正确定义了Function<String, String>的处理逻辑,但根本没有调用这个函数式接口来执行逻辑并获取结果,最后直接返回了空字符串,所以自然得不到预期的返回值。
修复核心
Function函数式接口的核心是通过apply(T t)方法传入参数、执行逻辑并拿到返回结果。你只需要把原来的空返回值替换成调用apply()的结果即可。
修改后的完整代码
public static String getAnimalName(String name) { // 函数逻辑定义部分是正确的 Function<String, String> getNameFunc = (inputName)-> { return inputName.equalsIgnoreCase("cat") ? "dog" : "rat"; }; // 调用函数的apply方法,传入参数并返回处理后的结果 return getNameFunc.apply(name); }
更简洁的写法(可选)
如果这个函数实例不需要复用,完全可以省略变量声明,直接内联调用:
public static String getAnimalName(String name) { return ((Function<String, String>) inputName -> inputName.equalsIgnoreCase("cat") ? "dog" : "rat" ).apply(name); }
验证效果
- 传入
"cat"或"Cat"时,返回"dog" - 传入其他任意字符串(比如
"bird")时,返回"rat"
内容的提问来源于stack exchange,提问作者Pavan
相关产品推荐
相关产品推荐

