Consistently ignore bridge method on generated subclass for visibility purposes

Closes gh-33030
This commit is contained in:
Juergen Hoeller
2024-06-17 18:42:20 +02:00
parent c38e9896c7
commit 2c3c3831c1
2 changed files with 41 additions and 0 deletions

View File

@@ -276,8 +276,13 @@ public final class BridgeMethodResolver {
*/
public static boolean isVisibilityBridgeMethodPair(Method bridgeMethod, Method bridgedMethod) {
if (bridgeMethod == bridgedMethod) {
// Same method: for common purposes, return true to proceed as if it was a visibility bridge.
return true;
}
if (ClassUtils.getUserClass(bridgeMethod.getDeclaringClass()) != bridgeMethod.getDeclaringClass()) {
// Method on generated subclass: return false to consistently ignore it for visibility purposes.
return false;
}
return (bridgeMethod.getReturnType().equals(bridgedMethod.getReturnType()) &&
bridgeMethod.getParameterCount() == bridgedMethod.getParameterCount() &&
Arrays.equals(bridgeMethod.getParameterTypes(), bridgedMethod.getParameterTypes()));