您可以使用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实例上调用该方法即可