2017-06-07 1 views
0

私はVERTXに基づいてプロジェクトの次の行に動作:MyClass.ADDRESSは、MyClassクラスで文字列型の静的フィールドであるのに対しvertx 2:vertx.eventBus()。send(ClassName.ADDRESS、....)なぜ新しいクラスを初期化するのですか?

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) { 
     ... 
    } 
} 

を、私はラインvertx.eventBus(ことが判明しました... )MyClassのオブジェクトを作成し、handle()関数を実行します。

私の質問はなぜですか? MyClass.ADDRESSは文字列で、静的なものです。 vertexは、この文字列が属性であるクラスからオブジェクトを作成する必要があることを「知っていますか?

私は、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-

、それは関数の最初の引数は「に送信するアドレス」であると述べています。 OK。しかし、誰が、このアドレスはこのクラスのインスタンス化を意味すると言ったのですか?

+0

'vertx.eventBus(...)は静的フィールドのために' MyClass'のオブジェクトを作成していますか? 'MyClass.ADDRESS'を' vertex.eventBus(...) 'の' 'coupons.api.manager" 'で置き換えて、この場合は' MyClass'のオブジェクトを取得するかどうか確認してください。 – berserkk

答えて

0

私は小さな研究を行いました。 Curtainの背後にあるVertxは、Handler>を実装するすべてのクラスを、ClassName.ADDRESS属性にある文字列値に接続します。

声明

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

が呼び出されると、新しいスレッドが作成され、MyClassクラスでハンドルメソッドを実行しています。

関連する問題