Java8中'()->{}'的类型是什么?

What is the type of '()->{}' in Java 8?

在Java8中,以下lambda的类型是什么???

() -> {}

这是一个不带任何参数且 returns 没有任何参数的函数。

不同的说法:

public class A {
  static void a(){}
  static void main(String[] args) {
    ???? a = A::a
  }
}

我应该用什么替换问号?

在 Scala 中,我认为这是 Function0[Unit],但我在 Java 中找不到任何相似之处。

感谢斯图尔特的回答:

java.lang.Runnable a = () -> {};

既然你这么说了,似乎很明显...

与 Scala 不同,Java 中的 lambda 没有固定的类型。相反,它们采用您将变量声明为任何接口的类型,只要该接口恰好定义了一个抽象方法并且该方法具有与 lambda 相同的签名。

因此,在您的情况下,您需要一个定义不带参数的 void 方法的接口。 Runnable 就是其中一个例子。