[armedbear-devel] [PATCH] Problems with new JavaObject.javaInstance(Class c) and JSS
Mark Evenson
evenson at panix.com
Wed Aug 5 15:17:40 UTC 2009
Unfortunately Alessio's (and Tobias?) work on [adding richness to
inspection of Java objects][1] contains a bug that manifests itself in
stopping [JSS][2] from working.
The attached patch gets JSS to run again, but I am not sure the right
way to fix the problem in the trunk, mainly as I don't understand all of
our conversion rules, and how they interact with Java's autoboxing.
The problem with JSS occurs when JavaObject.javaInstance(Class c) is
invoked with a Class from a primitive boolean on an JavaObject that
wraps a java.lang.Boolean. The call to
java.lang.Class.isAssignableFrom() has an oddly (to me) specific
contract that "[i]if [the] Class object represents a primitive type,
this method returns true if the specified Class parameter is exactly
this Class object; otherwise it returns false." This makes
JavaObject<java.lang.Boolean>.javaInstance(boolean) fail, when
everything seems to work fine if we simply return the wrapped object.
What I don't understand mainly is if boolean/java.lang.Boolean objects
are somehow special in our treatment of them, or should we do this for
all of the other primitive types?
[1]: http://trac.common-lisp.net/armedbear/changeset/12081
[2]: http://mumble.net:8080/svn/lsw/trunk/jss/
--
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: java-instance-primitive-types.diff
Type: text/x-diff
Size: 1892 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20090805/8272be8f/attachment.diff>
More information about the armedbear-devel
mailing list