On 3/20/02 11:15 AM, "Geir Magnusson Jr." <[EMAIL PROTECTED]> wrote:
> On 3/20/02 11:07 AM, "Attila Szegedi" <[EMAIL PROTECTED]> wrote: > >> I have looked at the algorithm with which Vel selects among overloaded >> methods. It is unfortunately kludgy, overcomplicated, and -- which is the >> biggest problem -- incomplete. It has a FIXME comment that it should be >> improved to deal with interfaces. Also, it doesn't honor the fact that in >> reflective method calls an argument of primitive type is represented by an >> object of the corresponding object type, so a java.lang.Boolean can be >> passed to a method that expects primitive boolean. There are also widening >> primitive conversions that should be taken into account when selecting the >> correct overloaded method (a java.lang.Integer can be passed wherever a >> primitive int can be passed, and that includes methods that expect primitive >> int, long, float, and double parameters due to widening conversions). >> >> The JLS has a very clear algorithm (described in section 15.12.2, amended by >> section 5.3) for selecting the most specific applicable method from all >> available overloaded methods. I have implemented that algorithm few days >> back in Freemarker, it works like champ and actually deals with interfaces, >> primitive-to-object assignments and primitive widening conversions. Beside, >> the code turned out to be quite elegant as well. >> >> I would be happy to rework Velocity's overloaded method selector as well if >> there's a need for it. Note that this is not a "don't fix if it ain't >> broken" situation since I consider it *is* broken in the sense that there >> are situations described above it just doesn't handle. >> >> Opinions? > > Go for it (BTW : that was my kludgy, overcomplicated and incomplete solution... :) -- Geir Magnusson Jr. [EMAIL PROTECTED] System and Software Consulting The bytecodes are language independent. - Sam Ruby -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
