拥有以下代码:
static int counter = 0;
static Callable<?> callable = () -> counter;
static Runnable runnable = () -> counter++;
static Runnable runnable2 = () -> counter; // DOES NOT COMPILE
public static void main(String[] args) throws Exception {
runnable.run();
System.out.println(callable.call()); // PRINTS "1"
}
我理解为什么runnable2不能编译 - 因为lambda返回一个值而runnable没有返回类型(是void)。我也理解为什么可调用编译,它返回计数器变量值,通过调用run方法增加。 (我知道它是单线程的,但这不是重点)。
我不明白为什么runnable
lambda实际编译?据我所知,++运算符确实返回一个值 - 递增的值 - 为什么编译器会忽略它?