Java void方法调用是否算作表达式?

Java void方法调用是否算作表达式?,java,expression,Java,Expression,在本Java文档教程中: System.out.println(),这是一个无效的方法调用,不算作表达式,但在规范的此链接中: 据说表达式可以是计算结果为空(void)的东西。这导致了我的问题和困惑:在Java中,void方法调用是否算作表达式?它背后的原因是什么?对void方法的调用仍然是一个表达式。所有方法调用都是(主)表达式,由以下命令指定: 如果void方法调用不是表达式,则无法写入: Runnable r = () -> System.out.println(); 上述方法之所

在本Java文档教程中:

System.out.println(),这是一个无效的方法调用,不算作表达式,但在规范的此链接中:


据说表达式可以是计算结果为空(void)的东西。这导致了我的问题和困惑:在Java中,void方法调用是否算作表达式?它背后的原因是什么?

对void方法的调用仍然是一个表达式。所有方法调用都是(主)表达式,由以下命令指定:

如果void方法调用不是表达式,则无法写入:

Runnable r = () -> System.out.println();
上述方法之所以有效,是因为
System.out.println()
是一个表达式,因此可以用作lambda主体。如果不是表达式,则必须使用块:

Runnable r = () -> { System.out.println(); };
归根结底,表达式是一种语法东西,在语法层面,解析器无论如何都不能分辨方法的返回类型:D.

“……解析器无论如何也不能分辨方法的返回类型”-事实上,使用常规语法来表示(非琐碎的)类型是不可能的。(你需要一份工作,他们真的让人心烦意乱。)
Runnable r = () -> System.out.println();
Runnable r = () -> { System.out.println(); };