From: Ype K. <yk...@xs...> - 2002-02-26 20:14:52
|
>Hi, I want to use jython to make some calculations in my java program and return a result to my jython program. I am creating an instance of jython interpreter in my java program and calling the interpreter's exec method. It do some computatios and create a set of objects. I have to use this set of objects in my java program. I mean jython interpreter MUST return a set to my java program. However, the exec method returns void value. How can I use jython in my java program so that I can use the values that were calculated in jython directly in my java code ? Thx, a lot. Apart from eval() you can also use objects in the namespace passed to exec(), or directly use the set() method of the interpreter to put some objects in there. One the these objects could be a java object to collect your result values: class ResultCollector { SomeCollection a = SomeCollection(); /* Vector, ArrayList, HashSet, TreeSet, whatever */ void addResult(Object value) { a.add(value);} /* call from jython */ Collection getResults() {return a;} /* call from java */ } myCollector = ResultCollector(); myInterpreter.set("theCollector", myCollector); myInterpreter.exec( ...); results = myCollector.getResults(); and in your jython code that is exec'ed: theCollector.addResult(someValue) Have a look at the automatic conversions between Java and Jython types and choose the argument type for addResult() to simplify things as much as possible in your case. Have fun, Ype -- |