Java 8中的'( - - > {}'是什么类型的?

Jua*_*uel 9 java lambda types functional-programming java-8

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

() -> {}
Run Code Online (Sandbox Code Playgroud)

这是一个不带参数并且不返回任何参数的函数.

换句话说:

public class A {
  static void a(){}
  static void main(String[] args) {
    ???? a = A::a
  }
}
Run Code Online (Sandbox Code Playgroud)

我应该用什么来代替问号?

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

sep*_*p2k 9

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

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

  • ...只要该接口定义了一个**抽象**方法...... (3认同)