我正在尝试使用 Esper API 注册一个用户定义的函数。它需要一个类或字符串类型的争论
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 类并完成它会更简单。
或者,您可以使用动态字节码生成来做一些事情,但那是一个全新的兔子洞......
关于java - 如何在 Jython 解释器中将 Python 类转换为 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850493/