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]>

Reply via email to