On Wed, 12 Feb 2025 19:54:37 GMT, Roman Marchenko <rmarche...@openjdk.org> 
wrote:

> The question is why `Test$DC.setFoo(java.lang.Number)` is set as default 
> setter, while the default call goes to `Test$AC.setFoo()`?

That is not a default call; it is just a method call when null is passed. If an 
Integer or Number is passed instead, different methods will be selected.

>Is this documented, or is there specification? I see that no tests exist for 
>this, so it's not clear what is the expected behaviour. I mean, regarding 
>property descriptors.

It was implemented in a way to minimize the difference between different 
'stopClasses' for the same object. In the example above, the next call will 
produce the same properties:
-  java.beans.Introspector.getBeanInfo(DC.class, Object.class);
-  java.beans.Introspector.getBeanInfo(DC.class, AC.class);

Thus, the methods of the current class have some priority over those of the 
parent class.

But if the same class has multiple setFoo(xxx) methods, the behavior will be 
undefined/unspecified.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/23443#issuecomment-2655131122

Reply via email to