From: Andres H. <an...@gf...> - 2005-11-04 12:28:38
|
On Fri, 4 Nov 2005, Diez B. Roggisch wrote: > > I thought I have to add @sig to any method I use from java. If I make > > this modification in your code, it will not work: > > > > class Foo(test.Test): > > def doNothing(self): > > """@sig public void doNothing()""" > > raise test.Test.Whatever() > > > > Thanks for the working example! > > > I can't reproduce that. AFAIK @sig is only needed in case of using jythonc, > _and_ wanting to introduce new methods that the compiled class should have, > but which aren't part of the subclassed one - either interface or base class. > > And I'm pretty sure the throws clause the is part of the signature, too. Which > you are missing, and maybe that causes the problems you see. I am using jythonc. In my case the main program is in java and it instantiates classes that are implemented in Python. It is not possible to add "throws" clause to @sig. This causes a jythonc compilation error: """@sig public void doNothing() throws Whatever""" I found references to that problem also on the mailing list. Without "throws" clause, PyException is thrown. Your example works fine if I leave out @sig altogether. I am going to check if I can leave out @sig if the method returns non-void and has parameters, like: class Foo(test.Test): def doNothing(self, x): if x == 0: raise test.Test.Whatever() return x Andres. |