Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Vertx HttpServerRequest中的语法_Java_Vert.x_Vertx Httpclient - Fatal编程技术网

Java Vertx HttpServerRequest中的语法

Java Vertx HttpServerRequest中的语法,java,vert.x,vertx-httpclient,Java,Vert.x,Vertx Httpclient,我是Java新手,最近正在学习Vertx,我不明白以下代码是如何工作的: @覆盖 公开作废开始(){ vertx.createHttpServer() .requestHandler(请求->请求响应() .end(“你好”)) .听(8080); } 我的问题是:为什么参数req不需要声明类型,以及这个req来自哪里?让我们把它分成几部分 创建HTTP服务器 使用我们的Vertx实例创建实例HttpSever HttpServer httpServer = vertx.createHttpS

我是Java新手,最近正在学习Vertx,我不明白以下代码是如何工作的:

@覆盖
公开作废开始(){
vertx.createHttpServer()
.requestHandler(请求->请求响应()
.end(“你好”))
.听(8080);
}

我的问题是:为什么参数
req
不需要声明类型,以及这个req来自哪里?

让我们把它分成几部分

创建HTTP服务器 使用我们的
Vertx
实例创建实例
HttpSever

HttpServer httpServer = vertx.createHttpServer();
httpServer.requestHandler(new MyRequestHandler())
定义请求处理程序 现在,对于我们的
HttpServer
,我们可以定义传入请求的处理程序

我们可以用于此
HttpServer#requestHandler(Handler Handler)
[1]。此方法采用
处理程序的一个实例

因此,我们可以将
处理程序的实例定义如下:

private static class MyRequestHandler implements Handler<HttpServerRequest> {

    @Override
    public void handle(HttpServerRequest req) {
        req.response().end("Hello");
    }
}
并在端口
8080

httpServer.listen(8080);
使用lambdas重构 注意,Handler是一个所谓的函数接口[2],而不是定义整个类,我们可以将lambda函数[3]直接传递给
httpServer.requestHandler()

我们可以避免大量的样板代码

因此,通过使用lambda,我们不需要定义整个类,只需:

httpServer.requestHandler(req -> req.response().end("Hello"));
现在,因为JAVA编译器知道
httpServer.requestHandler()
Handler
为例,所以它可以通过查看方法声明,推断编译类型中
req
的类型

使用fluentapi重构 由于vert.x促进了Fluet API[4],我们可以在不需要中间变量的情况下链接方法

vertx.createHttpServer()
      .requestHandler(req -> req.response().end("hello"))
      .listen(8080);

我强烈建议您阅读Java lambda教程,并对它们有良好的感觉,因为它们几乎不只是在Vert.x中使用,而是在Java世界的任何地方使用

玩得开心


[1]

[2]

[3]


[4] 让我们把它分成几块

创建HTTP服务器 使用我们的
Vertx
实例创建实例
HttpSever

HttpServer httpServer = vertx.createHttpServer();
httpServer.requestHandler(new MyRequestHandler())
定义请求处理程序 现在,对于我们的
HttpServer
,我们可以定义传入请求的处理程序

我们可以用于此
HttpServer#requestHandler(Handler Handler)
[1]。此方法采用
处理程序的一个实例

因此,我们可以将
处理程序的实例定义如下:

private static class MyRequestHandler implements Handler<HttpServerRequest> {

    @Override
    public void handle(HttpServerRequest req) {
        req.response().end("Hello");
    }
}
并在端口
8080

httpServer.listen(8080);
使用lambdas重构 注意,Handler是一个所谓的函数接口[2],而不是定义整个类,我们可以将lambda函数[3]直接传递给
httpServer.requestHandler()

我们可以避免大量的样板代码

因此,通过使用lambda,我们不需要定义整个类,只需:

httpServer.requestHandler(req -> req.response().end("Hello"));
现在,因为JAVA编译器知道
httpServer.requestHandler()
Handler
为例,所以它可以通过查看方法声明,推断编译类型中
req
的类型

使用fluentapi重构 由于vert.x促进了Fluet API[4],我们可以在不需要中间变量的情况下链接方法

vertx.createHttpServer()
      .requestHandler(req -> req.response().end("hello"))
      .listen(8080);

我强烈建议您阅读Java lambda教程,并对它们有良好的感觉,因为它们几乎不只是在Vert.x中使用,而是在Java世界的任何地方使用

玩得开心


[1]

[2]

[3]

[4]