在浏览功能接口时,我无法理解它们与使用单一方法的其他接口有何不同,例如 Runnable。
我们可以在尝试使用其他 Functional 接口时使用 Runnable。在 Java 8 之前,我们已经可以为单个功能创建接口和匿名对象。
例如:
@FunctionalInterface
public interface ITrade {
public boolean check(Trade t);
}
Run Code Online (Sandbox Code Playgroud)
这与以下有何不同:
public interface ITrade {
public boolean check(Trade t);
}
Run Code Online (Sandbox Code Playgroud) 我无法理解为什么BinaryOperator<Integer>可以A在下面的代码中放置在的位置,而不是BiFunction<Integer, Integer>?
A foo = (a, b) -> { return a * a + b * b; };
int bar = foo.apply(2, 3);
System.out.println(bar);
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解它。
我正在使用 Java 中的函数式接口,现在我正在尝试定义一个长函数,它可以做一些简单的事情,比如添加数字或其他什么。
但是,如果我尝试这样做,同时将 Integer 作为 longfunction 的类型,如下所示:
LongFunction<Integer> i = (l) -> l + l;
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,我的编译器抱怨并说“lambda 表达式中的返回类型错误:long 无法转换为整数”。如果 long 通常无法转换为整数,这将是有意义的。
但我完全有能力做到这一点:
int a = 1;
int b = 5;
long l = a +b;
Run Code Online (Sandbox Code Playgroud)
为什么是这样?为什么 java 完全能够将 long 转换为 int 以及正常情况下的其他方式,但在 lambda 中要严格得多?
我正在浏览 Java 8 Feature 并使用 Jshell 来探索它。我尝试运行以下命令:
Consumer<String> consumer = (str)->System.out::println;
Run Code Online (Sandbox Code Playgroud)
但它失败并出现以下错误:
Error:
| incompatible types: bad return type in lambda expression
| void is not a functional interface
Run Code Online (Sandbox Code Playgroud)
我不明白到底是什么问题 Consumer 接受一个论点而什么都不返回。我在这里通过传递 1 arg str 和打印来做同样的事情。那么这个语法有什么问题。
谢谢,