java in action 8-lambdas和方法参考等效项

时间:2018-06-27 06:38:50

标签: java lambda method-reference

根据实际使用的Java 8

(str,i)-> str.substring(i)等效于方法引用String :: substring

我的代码如下。

使用Lambda,

String s = "HELLO WORLD";
BiFunction<String, Integer, String> biFunc = (String s, Integer i) -> s.substring(i);

方法参考

但是以下代码给出了编译时错误,提示无法解析方法子字符串

BiFunction<String, Integer, String> biFunc1 = s1::substring;

请帮助我了解我所缺少的!谢谢

1 个答案:

答案 0 :(得分:3)

目前尚不清楚<button id="add" onclick="add();"> add </button> <table id="data_table"> </table>中的s1是什么。如果s1::substrings1实例,并且您尝试为特定的String实例创建方法引用,则该方法引用与String功能接口不匹配,因为调用BiFunction要求您提供biFunc1.apply()String,但是您已经在方法引用Integer中提供了特定的String实例。

另一方面,s1::substrings1::substring功能界面匹配。

要创建所需类型的Function<Integer,String>,请使用非特定实例的方法引用:

BiFunction

示例:

BiFunction<String, Integer, String> biFunc1 = String::substring;