If we want to call a function written in Python from Java, which takes as input a Java object and returns another object, we can realize it using the following snippet build on Jython.
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python"); engine.eval(new FileReader("foobar.py")); Bindings bind = engine.getBindings(ScriptContext.ENGINE_SCOPE); PyFunction func = (PyFunction) bind.get("func"); Foo foo = new Foo(); PyObject ret = func.__call__(Py.java2py(foo)); Bar bar = Py.tojava(ret, Bar.class);