在Jython中使用/创建Python对象

3 投票
1 回答
1301 浏览
提问于 2025-04-15 15:08

你好,

假设我有一个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的实例呢?抱歉问了这么个初学者的问题,但Jython的文档不好用/部分内容无法访问。

1 个回答

4

这是你上面例子的代码。你还需要修改FooBar的实现,让它接受一个self参数,因为它不是静态方法。

为了让这个例子能够编译和运行,你需要在类路径中加入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与Java集成这一章,内容在Jython书籍中。

撰写回答