我正在尝试使用 Lambda 表达式连接两个字符串。我创建了函数接口(interface) StringFormatter,它具有 format 方法,该方法将两个字符串作为参数。它应该返回字符串。 ans 应该是 Returns "Lambda Expression"或 Returns "Lambda – Expression",具体取决于 lambda 表达式。
public class Main {
public static void main(String[] args) {
String s1="Lambda";
String s2="Expression";
new Main().print(s1,s2);
}
public void print(String st1, String st2) {
String result= (st1, st2) -> { return st1+" "+ st2;}; /*error- The target type of this expression must be a functional interface*/
System.out.println(result);
}
}
@java.lang.FunctionalInterface
interface StringFormatter {
abstract String format(String s1, String s2);
}
最佳答案
我想你想要这样的东西:
public class Main {
public static void main(String[] args) {
String s1="Lambda";
String s2="Expression";
// format 1
new Main().print(s1,s2, (str1, str2) -> str1 + " " + str2);
// format 2
new Main().print(s1,s2, (str1, str2) -> str1 + "-" + str2);
}
void print(String str1, String str2, StringFormatter formatter) {
String result = formatter.format(str1, str2);
System.out.println(result);
}
}
@java.lang.FunctionalInterface
interface StringFormatter {
String format(String s1, String s2);
}
关于java-8 - 该表达式的目标类型必须是自定义接口(interface)的函数式接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49670186/