|
From: <bc...@wo...> - 2001-06-18 18:21:05
|
On Fri, 15 Jun 2001 16:28:33 -0600, you wrote:
>Hi,
>
>So far I think Jython is pretty cool... but I've got a problem/question...
>
>First off, here's my sample code:
>
>...
>
>My problem is that I really need the method
>
> void setAttribute(String key, Object attr)
>
>to be this:
>
> void setAttribute(String key, Serializable attr)
Jython-2.0 did not handle Serializable argument very well. This have
been fixed in jython-2.1a1 where your example works.
>Can someone explain this to me?
When the python code
theMap.setAttribute("crapKey", "crapVal")
is executed jython is faced with a choice. Should it insert the the
PyString instance that wraps "crapVal" or should it unwrap the string
and insert the java.lang.String instance. If the method signature uses
Object, jython always unwraps, which is why that works in you example.
If the method signature used Serializable, Jython-2.0 would check and
see that PyString implement Serializable (it does) and pass over the
PyString wrapper. In Jython-2.1a1, a Serializable signature will cause
unwrapping of string, ints, longs, floats, classes and instances.
regards,
finn
|