我想在
java类中扩展一个jython类
public class JavaClass extends JythonClass
如何导入Jython类?是否必须编译?文档链接已经很有用.
例:
class JythonClass(threading.Thread): def do(self): print("hallo")
–
public class JavaClass extends JythonClass { public void hello() { System.out.print("hallo")} }
解决方法
您可以使用Java扩展Jython类,以便通过创建扩展Java“子类”和Jython“超类”的Jython类在Jython中使用该结果.假设你有这个Jython类:
class JythonClass(object): def get_message(self): return 'hello' def print_message(self): print self.get_message()
您可以部分创建Java类,而无需扩展任何内容:
public class JavaClass { private String message; public String get_message() { return message; } protected JavaClass(String message) { this.message = message; } }
然后在Jython中引起“扩展”关系:
from javapackage import JavaClass as _JavaClass from jythonpackage import JythonClass class JavaClass(_JavaClass,JythonClass): pass
现在这将工作:
obj = JavaClass('goodbye') obj.print_message()
如果您希望在Java中扩展Jython类,并像普通的Java类一样使用它,最简单的方法是使用组合而不是继承:
>为Jython类上的方法创建Java接口>让你的Jython类扩展Java接口(通过直接修改你的Jython类代码,或者像我上面解释的那样)>创建Java子类作为实现接口,将Jython“superclass”的实例作为私有字段>您希望覆盖的Java子类中的任何方法,只需在私有Jython实例上调用该方法即可