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'

我可以通过

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

@larsmans:似乎只存在于 Java Class 类中

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 book 中提到的对象工厂方法,并结合一个代理类,这是你作为参数传递的。

但是,该方法涉及编写大量 Java,在您的情况下,仅用 Java 编写 MyUdf 类并完成它似乎会更简单。

或者,您也许可以通过动态字节码生成来做一些事情,但这是一个全新的兔子洞......

于 2010-10-27T09:02:56.530 回答