2009-10-17 5 views
2

HI,Utilisation/Création d'objets Python avec Jython

disons que j'ai une interface Java B, quelque chose comme ça. B.java:

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

et je veux l'utiliser avec une classe D de Python qui hérite de B, comme ceci. D.py:

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

Maintenant, comment puis-je obtenir une instance de D dans Java? Je suis désolé je demande une telle question n00b mais le doc Jython suce/est partiellement hors ligne.

Répondre

3

Code pour l'exemple ci-dessus. Vous devez également modifier l'implémentation de FooBar pour prendre un argument self car ce n'est pas une méthode statique.

Vous devez avoir jython.jar sur le chemin de classe pour cet exemple à compiler et à exécuter.

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

Pour plus d'informations voir le chapitre sur Jython and Java integration dans les Jython Book

+0

Liens semble cassé :( – Emma