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

Reply via email to