根据实际使用的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;
请帮助我了解我所缺少的!谢谢
答案 0 :(得分:3)
目前尚不清楚<button id="add" onclick="add();">
add
</button>
<table id="data_table">
</table>
中的s1
是什么。如果s1::substring
是s1
实例,并且您尝试为特定的String
实例创建方法引用,则该方法引用与String
功能接口不匹配,因为调用BiFunction
要求您提供biFunc1.apply()
和String
,但是您已经在方法引用Integer
中提供了特定的String
实例。
另一方面,s1::substring
与s1::substring
功能界面匹配。
要创建所需类型的Function<Integer,String>
,请使用非特定实例的方法引用:
BiFunction
示例:
BiFunction<String, Integer, String> biFunc1 = String::substring;