首先请注意,您的 dothingsWithTwoArgs 不是静态的,因此您不应该尝试以静态方式调用它:您应该使用 Dummy 类的实例或创建 dothingsWithTwoArgs强>静态
这里有一些插图可以帮助你前进
首先,您需要一个将 TriFinction 作为其参数之一的方法
例子:
public static String sumToString(String a,String b, String c, TriFinction<String,String,String,String> f) {
return f.whatEver(a, b, c);
}
其次,在您的 Dummy 类中您需要一个与 TriFinction 的通用签名相匹配的方法(例如,这意味着它接收 O、J 和 I 的三个参数并返回一个R)
例如
public static String dothingsWithThreeArgs(String a, String b,String c) {
return a+ " " + b + " " + c;
}
现在您可以在 main 方法中使用方法引用,例如:
System.out.println(sumToString("2","3","4",Dummy::dothingsWithThreeArgs));
这是完整的示例以及来自您的 TriFinction 的第二个插图(我想您应该重构并将其重命名为 TriFunction :))
public class ExtractWithLambda {
@FunctionalInterface
interface TriFinction<O,I,J, R> {
R whatEver(O object, I input1, J input2);
}
public static String writeEqu(TriFinction<Double,Double,Double,String> f) {
return f.whatEver(2.5, 3.4, 5.6);
}
public static String sumToString(String a,String b, String c, TriFinction<String,String,String,String> f) {
return f.whatEver(a, b, c);
}
public static void main(String[] args) {
System.out.println(writeEqu(Dummy::writeEquation));
System.out.println(sumToString("2","3","4",Dummy::dothingsWithThreeArgs));
}
}
class Dummy {
public static String dothingsWithThreeArgs(String a, String b,String c) {
return a+ " " + b + " " + c;
}
public static String writeEquation(double a, double b, double c) {
return a + "*x*x " + b + "*x " + c ;
}
}