On Wed, 2 Apr 2025 04:01:25 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> @mrserb >> >>> getMethodDescriptors() returns all methods of the class, **including static >>> ones**, but static methods are not considered properties >> >> I'd like to clarify the behavior: >> >> - Should `getMethodDescriptors()` return static methods defined in the >> interfaces the class extends? >> - If yes, should it recursively find static methods defined in interfaces? >> For example, the test scenario 1 defines `static int getStaticValue()` in >> `A1` interface hidden in the inheritance chain. Should it be included to the >> method descriptor list? > >>Should getMethodDescriptors() return static methods defined in the interfaces >>the class extends? > > Yes, I think it should return static methods as well, similar to how it works > for classes. > >>If yes, should it recursively find static methods defined in interfaces? For >>example, the test scenario 1 defines static int getStaticValue() in A1 >>interface hidden in the inheritance chain. Should it be included to the >>method descriptor list? > > For classes, this approach returns all static methods up to Object.class, > with one exception - when a subclass "overrides" a static method from a > parent class. Interfaces should follow a similar logic. > > - In case of a clash with a class method, the class version should take > precedence. (Is it better for compatibility?) > - If the same method appears in multiple interfaces within the same > hierarchy, the version from the most specific sub-interface should be > selected. > - If the method appears in interfaces from different hierarchies, either > version can be returned. Implemented. Could you review new version? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/23443#discussion_r2024472470