使用/使用Jython创建Python对象

时间:2009-10-17 17:03:37

标签: java python jython

HI,

假设我有一个Java接口B,就像这样。 B.java:

public interface B { String FooBar(String s); }

我希望将它用于Python类D女巫继承B,就像这样。 D.py:

class D(B):
    def FooBar(s)
        return s + 'e'

那么现在如何在java中获取D的实例?对不起我问这样一个n00b问题,但是Jython doc很糟糕/部分脱机。

1 个答案:

答案 0 :(得分:3)

上面示例的代码。您还需要更改FooBar实现以获取自身参数,因为它不是静态方法。

您需要在类路径上使用jython.jar来编译和运行此示例。

import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.util.PythonInterpreter;
public class Main {

    public static B create() 
    {
        PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.exec("from D import D");
        PyObject DClass = interpreter.get("D");

        PyObject DObject = DClass.__call__();
        return (B)DObject.__tojava__(B.class);
    }

    public static void main(String[] args) 
    {
        B b = create();
        System.out.println(b.FooBar("Wall-"));
    }
}

有关详情,请参阅Jython and Java integration

中有关Jython Book的章节