On May 14, 3:54 am, Attila Szegedi <[EMAIL PROTECTED]> wrote: > On 2008.05.13., at 17:36, helge wrote: > > > Why would you call the most specific variant? Since null is most > > generic, I would expect the most generic method to be called :-) > > Well, that's the algorithm javac uses to choose among overloads at > compile time, and it's part of the Java Language Specification. Don't > get me wrong, I'm not trying to refer to authority here -- you're free > to debate it or point out that it might be unintuitive from your POV. > I think JLS or no JLS, it does make perfect sense. > > Also, if null literal in argument list was handled as a special case > and would match most generic type, and other values would match most > specific, that'd pose some interesting resolution problems with > overloads that have more than one argument, and you pass null for some > arguments. > > > > > Anyways. > > >> And what additional type knowledge does Rhino have about null at > >> runtime? > > > It knows that the value is actually null when it decides for a method > > to call? Java doesn't know that when it chooses the method to be > > invoked, it only has the static type at compile time (ignoring the > > special case of a constant 'null'). > > Right - that's true. With dynamic invocation, the overloaded method > selection happens at invocation time. I thought you're still debating > the special case of null literal here :-) > > >>> So are there chances that this is added to Rhino? :-) > >> Hm... Rhino is supposed to have overloaded method resolution, isn't > >> it? > > > Apparently not (btw: those are just static functions, not > > constructors): > > ---snip--- > > Message: The choice of Java constructor isNotEmpty matching JavaScript > > argument types (null) is ambiguous; candidate constructors are: > > boolean isNotEmpty(java.lang.Object) boolean > > isNotEmpty(java.lang.String) > > ---snap--- > > Hm... that's bad. Norris -- if you're listening -- are you or anyone > else aware of the degree Rhino is supposed to support resolution of > overloaded Java methods? > > Attila.
Here's the spec that Rhino follows for resolution of calls to Java methods from JavaScript: http://www.mozilla.org/js/liveconnect/lc3_method_overloading.html We have extended it in a few small cases, but in general this should be what Rhino does. --Norris _______________________________________________ dev-tech-js-engine-rhino mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
