3

HI,

lets say I have a Java interface B, something like this. B.java :

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

and I want to use it with a Python class D witch inherits B, like this. D.py :

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

So now how do I get an instance of D in java? I'm sorry im asking such a n00b question but the Jython doc sucks / is partially off line.

1 Answer 1

4

Code for your example above. You also need to change the FooBar implementation to take a self argument since it is not a static method.

You need to have jython.jar on the classpath for this example to compile and run.

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-"));
    }
}

For more info see the chapter on Jython and Java integration in the Jython Book

Sign up to request clarification or add additional context in comments.

2 Comments

Links seems broken :(

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.