On 5/22/2024 11:19 AM, Aman Sharma wrote:
Hi,
[snip]
Notice the difference in the order of fields and `helpCommand` method
is mapped to a different field name in both classes. This happens
because the method array returned by `getMethods` is not sorted in any
particular order
<https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/Class.java#L2178>
when generating a proxy class. What dictates this order? And why is it
not deterministic?
Regards,
Aman Sharma
As a general comment, it is _not_ the goal of the API specification to
(over) specify exact behavior in cases like this.
See as an example the discussion concerning behavioral compatibility
starting around slide 46 of
"Contributing to OpenJDK: Participating in stewardship for the long-term,"
https://jcp.org/aboutJava/communityprocess/ec-public/materials/2023-06-13/Contributing_to_OpenJDK_2023_04_12.pdf
This approach has evolved over the years and releases.
In this case semantically, the array returned by getMethod is a set and
the no particular meaning should be read into the order of the elements.
HTH,
-Joe