From: <mic...@ya...> - 2002-10-11 10:52:52
|
Hi, I'd like to implement a java interface in Jython, and then compile that into java bytecode. I want to be able to use a factory class in Java to create instances of jython classes which implement a java interface class. I see that if I want to extend a java class, I need to call the super class's init method in the jython class's init method, but the problem seems to be occuring before it even gets to that. What it boils down to is: Can a jython class implement an interface written in Java? Would it be easier to write the interface class in jython (and then compile it to java)? If so, how do I go about it? Whether or not we use jython on my current project hinges largely on this issue, so I'd appreciate any help. TIA, Micheál Healy __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com |
From: Oti <oh...@ya...> - 2002-10-28 20:26:57
|
[ Micheál Healy ] > I'd like to implement a java interface in Jython, and > then compile that into java bytecode. I want to be > able to use a factory class in Java to create > instances of jython classes which implement a java > interface class. > > I see that if I want to extend a java class, I need to > call the super class's init method in the jython > class's init method, but the problem seems to be > occuring before it even gets to that. > > What it boils down to is: Can a jython class implement > an interface written in Java? > Would it be easier to write the interface class in > jython (and then compile it to java)? > If so, how do I go about it? > > Whether or not we use jython on my current project > hinges largely on this issue, so I'd appreciate any > help. Hello Micheál, you don't necessarily have to compile. Consider the following java interface: package CH.obj.Test; public interface ITest { public void test1(); public void test2(); } and its implementation in Jython (assume File e:/temp/TestImpl.py): from CH.obj.Test import ITest class TestImpl(ITest): def test1(self): print "test1 from Jython" def test2(self): print "test2 from Jython" and the following java factory: package CH.obj.Test; import org.python.util.PythonInterpreter; public class JythonFactory { public static ITest newTestInstance() { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.execfile("e:/temp/TestImpl.py"); String instanceName = "testImpl"; interpreter.exec(instanceName + " = TestImpl()"); ITest iTest = (ITest) interpreter.get(instanceName).__tojava__(ITest.class); return iTest; } public static void main(String args[]) { ITest iTest = newTestInstance(); iTest.test1(); iTest.test2(); } } then calling 'java CH.obj.Test.JythonFactory' leads to: test1 from Jython test2 from Jython Hope this gives you some creative ideas how to use Jython! Best wishes, Oti. __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ |