如何在Jython解释器中将Python类转换为Java类?

时间:2010-10-03 15:59:57

标签: java python jython esper

我正在尝试使用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: class 似乎只存在于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__' 

1 个答案:

答案 0 :(得分:0)

我不认为这是可能的。 Jython类不是Java类,据我所知,没有纯粹的jython机制可以使用它。

一般来说,我会说您应该使用对象工厂方法mentioned in the Jython book,并与代理类结合使用,这是您作为参数传递的内容。

但是,该方法涉及编写大量Java,看起来在您的情况下,只需用Java编写MyUdf类就可以更简单了。

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