Spec update for Class#getDeclaredMethods()
Joseph D. Darcy
Joe.Darcy at Sun.COM
Thu Jul 16 16:38:44 UTC 2009
Florian Weimer wrote:
> * Rémi Forax:
>
>
>> The solution is to not rely on reflection and to parse the bytecode
>> using by example ASM :
>> see http://asm.ow2.org/
>>
>
> I think you'd still need to sort based on line numbers, which requires
> debugging information which is not always available.
>
> The only reliable way I know is to use a JSR 269 compiler plugin.
> Members are guaranteed to be in source order over there. (But this
> still suffers from poor IDE support, AFAICS.)
>
The source ordering from JSR 269 is only guaranteed if the information
is coming from a source file; from javax.lang.model.element.TypeElement:
"Each method of this interface that returns a list of elements will
return them in the order that is natural for the underlying source of
program information. For example, if the underlying source of
information is Java source code, then the elements will be returned in
source code order."
http://java.sun.com/javase/6/docs/api/javax/lang/model/element/TypeElement.html
If the information is coming from a class file, elements will be
returned in the same order as they were in the class file.
Note that in the case of core reflection, which actually mostly present
a JVM model of the world rather than a Java source model, there are more
cases where non-source artifacts can crop up, including but not limited
to implicit no-arg constructors and bridge methods.
-Joe
More information about the core-libs-dev
mailing list