2

ユーザー定義関数を Esper API に登録しようとしています。クラスまたは文字列型の引数を取ります

http://esper.codehaus.org/esper-4.0.0/doc/api/com/espertech/esper/client/ConfigurationOperations.html#addImport(java.lang.String )

class MyUdf():
    @staticmethod
    def udf():
        return 50

conf.addImport(myudf.getClass().getName())

エラーメッセージ

AttributeError: class MyUdf has no attribute 'getClass'

Javaクラスをインポートできます

from java.lang import Math
conf.addImport(Math)

@larsmans:クラスは Java クラス クラスにのみ存在するようです

class MyUdf(): 
    @staticmethod 
    def udf(): 
        return 50 

def main(): 
    a = 'abc' 
    print a.__class__ 
    u = MyUdf 
    print u.__class__ 


Traceback (most recent call last): 

line 79, in main print u.__class__ AttributeError: class MyUdf has no attribute '__class__' 
4

1 に答える 1

0

これは不可能だと思います。Jython クラスは Java クラスではありません。私が知る限り、Jython を制御するための純粋な jython メカニズムはありません。

一般的に、Jython book に記載されているオブジェクト ファクトリ メソッドを使用して、パラメーターとして渡すプロキシ クラスと組み合わせる必要があると思います。

ただし、その方法には多くのJavaを記述する必要があり、あなたの場合、MyUdfクラスをJavaで記述してそれで完了する方が簡単なようです.

または、動的なバイトコード生成で何かを行うことができるかもしれませんが、それはまったく新しいウサギの穴です...

于 2010-10-27T09:02:56.530 に答える