Skip to main content
 首页 » 编程设计

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

2025年05月04日18小虾米

我正在尝试使用 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__'  

请您参考如下方法:

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

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

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

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