2009-08-25 10 views
1

私はEventBusをJythonから使用しようとしています。 Jythonバスからイベントを期待通りに送信すると、Javaコードからイベントを受信できます。しかし、Jythonからバスに加入するのは問題があります。私はこれをしようとしている:Listening EventBus in Jython

class Listener(EventTopicSubscriber): 
    def onEvent(self, topic, object): 
     print("got an event") 

EventBus.subscribe("Topic", Listener) 

それは次のようになります:

TypeError: subscribe(): 1st arg can't be coerced to java.util.regex.Pattern, 
java.lang.reflect.Type, String, java.lang.Class 

私は第一引数に何か問題があることができることを驚いています。私が理解しているのは、文字列リテラルであることと同じです。何か案は?

答えて

2

エラーメッセージが誤解を招くかどうかはわかりませんが、あなたのコードについては他に奇妙なものがあります。 subscribeの第2のの引数は、EventTopicSubscriberのインスタンスになると思います。クラスを渡しました。おそらく

EventBus.subscribe("Topic", Listener()) 

がより適切ですか?

+0

それは、ありがとう!自分の間違いがどのように盲目になるかは信じられないほどです。ああ、少なくともエラーメッセージは誤解を招いていた。 –

+0

実際、イベントEventBus.subscribeが、「トピック」をいくつかのListener()メソッドに渡すように試みている可能性があります。それが失敗したとき(クラスにはメソッドがあるのでインスタンスメソッドであり、バインドされていないクラス参照があります)、ディスパッチラッパーに "正規表現を作れませんでした"のように見えませんでしたか? –

+0

かなり可能です。とにかく、それは私の間違いで、今は夢のように動作します:-) –