Package org.springframework.core

# Class BridgeMethodResolver

java.lang.Object
org.springframework.core.BridgeMethodResolver

public final class BridgeMethodResolver extends Object
Helper for resolving synthetic `bridge Methods` to the `Method` being bridged.

Given a synthetic `bridge Method` returns the `Method` being bridged. A bridge method may be created by the compiler when extending a parameterized type whose methods have parameterized arguments. During runtime invocation the bridge `Method` may be invoked and/or used via reflection. When attempting to locate annotations on `Methods`, it is wise to check for bridge `Methods` as appropriate and find the bridged `Method`.

See The Java Language Specification for more details on the use of bridge methods.

Since:
  2.0
Author:
  Rob Harrop, Juergen Hoeller, Phillip Webb

## Method Summary

Modifier and Type
Method
Description
`static Method`
`findBridgedMethod(Method bridgeMethod)`
Find the local original method for the supplied `bridge Method`.
`static Method`
`getMostSpecificMethod(Method bridgeMethod, Class<?> targetClass)`
Determine the most specific method for the supplied `bridge Method` in the given class hierarchy, even if not available on the local declaring class.
`static boolean`
`isVisibilityBridgeMethodPair(Method bridgeMethod, Method bridgedMethod)`
Compare the signatures of the bridge method and the method which it bridges.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### findBridgedMethod

public static Method findBridgedMethod(Method bridgeMethod)
Find the local original method for the supplied `bridge Method`.

It is safe to call this method passing in a non-bridge `Method` instance. In such a case, the supplied `Method` instance is returned directly to the caller. Callers are not required to check for bridging before calling this method.

Parameters:
  `bridgeMethod` - the method to introspect against its declaring class
Returns:
  the original method (either the bridged method or the passed-in method if no more specific one could be found)
See Also:
  - `getMostSpecificMethod(Method, Class)`

### getMostSpecificMethod

public static Method getMostSpecificMethod(Method bridgeMethod, @Nullable Class<?> targetClass)
Determine the most specific method for the supplied `bridge Method` in the given class hierarchy, even if not available on the local declaring class.

This is effectively a combination of `ClassUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)` and `findBridgedMethod(java.lang.reflect.Method)`, resolving the original method even if no bridge method has been generated at the same class hierarchy level (a known difference between the Eclipse compiler and regular javac).

Parameters:
  `bridgeMethod` - the method to introspect against the given target class
  `targetClass` - the target class to find the most specific method on
Returns:
  the most specific method corresponding to the given bridge method (can be the original method if no more specific one could be found)
Since:
  6.1.3
See Also:
  - `findBridgedMethod(java.lang.reflect.Method)`
  - `ClassUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)`

### isVisibilityBridgeMethodPair

public static boolean isVisibilityBridgeMethodPair(Method bridgeMethod, Method bridgedMethod)
Compare the signatures of the bridge method and the method which it bridges. If the parameter and return types are the same, it is a 'visibility' bridge method introduced in Java 6 to fix JDK-6342411.

Returns:
  whether signatures match as described