为什么增加运算符lambda编译为Runnable?

时间:2017-06-18 14:49:56

标签: java lambda java-8

拥有以下代码:

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实际编译?据我所知,++运算符确实返回一个值 - 递增的值 - 为什么编译器会忽略它?

0 个答案:

没有答案