Lambda 这是什么java8语法?在哪里可以阅读更多?

Lambda 这是什么java8语法?在哪里可以阅读更多?,lambda,java-8,Lambda,Java 8,如何在一个块中放置多个方法调用(例如下面的“get”) package Routes; import org.jooby.mvc.Path; public class UserRoutes extends BaseRoutes { { get("/users", (req, resp) -> { resp.send("Uses index"); }); get("/user/:id", (req, resp) -> {

如何在一个块中放置多个方法调用(例如下面的“get”)

package Routes;

import org.jooby.mvc.Path;

public class UserRoutes extends BaseRoutes {

  {

    get("/users", (req, resp) -> {
        resp.send("Uses index");
    });

    get("/user/:id", (req, resp) -> {
        resp.send("Single user page");
    });
  }

}
我正在阅读关于lambdas的文章,这些文档讨论的是单个方法接口。
我在学习lambdas的同时,还学习了一个名为

的web框架,它被称为一个名为初始化程序块,它执行两个方法
get


get
方法看起来像是将一个
字符串和一个
BiConsumer
作为输入。除此之外,我不完全确定还有什么其他语法使我们感到困惑

此构造与lambdas无关;我相信从Java6开始就有了。该语法称为或。Java编译器将
{}
之间的代码复制到类中的每个构造函数中。创建类的实例时也会调用该块。您可以将其视为每个构造函数都必须调用的“init”方法的更好替代方法

请注意,您的
User
类正在扩展一个基类,其中显然定义了
get
方法。你也可以写

{

    this.get("/users", (req, resp) -> {
        resp.send("Uses index");
    });

}


*通常你会扩展org.jooby.jooby

这段代码到底是什么让你困惑?如果您已经在学习lambda,那么您应该知道
(req,resp)->{…}
确实是一个lambda。让我困惑的是将多个方法放在一个块中。啊。这不是多种方法。它是多个方法调用。实例初始值设定项块(您可以将其视为构造函数块)仅包含对方法get()的多个调用。它允许定义两个路由,通过指定它们的路径,以及在GET请求到达该路径时如何处理请求和响应。感谢@JBNizet,“Initializer Block”是我一直在寻找的。现在我知道该读什么了。也许你可以把你的评论作为一个答案,我会接受的。在今天之前,我从来没有听说过初始化程序block。谢谢,谢谢你的解释。现在我明白了。
import org.jooby.Jooby;

public class UserRoutes {    

    {
        Jooby jooby = new Jooby();

        jooby.get("/users", (req, resp) -> {
                resp.send("Uses index");
            });
    }
}