Browse Source
Prior to this commit, the algorithm behind determineBasicProperties() in PropertyDescriptorUtils did not reliably resolve the correct write method when one candidate write method had a parameter type that was a subtype of another candidate write method whose parameter type was an exact match for the resolved read method's return type. In other words, the algorithm always resolved the candidate write method with the most specific parameter type (similar to covariant return types) which is not necessarily the resolved read method's return type. To address that, this commit ensures that determineBasicProperties() always selects an exact match for the write method whenever possible. As an added bonus, determineBasicProperties() no longer invokes BasicPropertyDescriptor.getWriteMethod(), which avoids triggering the resolution algorithm multiple times (when multiple write method candidates exist), resulting in lazy resolution of the write method the first time client code invokes getWriteMethod(). Closes gh-36113pull/36115/head
2 changed files with 30 additions and 33 deletions
Loading…
Reference in new issue