vertx 2:vertx.eventBus()。send(ClassName.ADDRESS,....)为什么要初始化一个新类?

时间:2017-06-07 08:23:24

标签: vert.x

我在以下一行基于Vertx的项目上工作:

vertx.eventBus().send(MyClass.ADDRESS, requestBody, new Handler<Message<Object>>() {
   ....
}

public class MyClass implements Handler<Message<JsonObject>> { 
   public static final String ADDRESS = "coupons.api.manager";
   ...
   @Override
   public void handle(Message<JsonObject> msg) { 
      ...
   }
}

MyClass.ADDRESS是MyClass类中字符串类型的静态字段,我发现vertx.eventBus(...)行创建了一个MyClass对象,然后运行handle()函数。

我的问题是为什么? MyClass.ADDRESS是一个字符串,是一个静态字符串。 vertx&#34;如何知道&#34;它必须从类创建一个对象,该字符串是一个属性?

我查看了send()函数的文档:http://vertx.io/docs/apidocs/io/vertx/core/eventbus/EventBus.html#send-java.lang.String-java.lang.Object-io.vertx.core.eventbus.DeliveryOptions-io.vertx.core.Handler-

并且它表示函数中的第一个参数是&#34;将其发送到&#34;的地址。好。但是,谁说地址意味着实例化这个类?

1 个答案:

答案 0 :(得分:0)

我进行了一项小型研究,是的。窗帘后面的Vertx连接所有实现Handler&gt;的类。到属性ClassName.ADDRESS中的字符串值。

当声明:

vertx.eventBus().send(MyClass.ADDRESS, requestBody, new Handler<Message<Object>>() {
   ....
}
调用

,创建一个新线程并在MyClass类中运行handle方法。