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)`
Deprecated, for removal: This API element is subject to removal in a future version.
as of 6.2.13: not necessary anymore due to `getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)`

### 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

@Deprecated(since="6.2.13", forRemoval=true) public static boolean isVisibilityBridgeMethodPair(Method bridgeMethod, Method bridgedMethod)
Deprecated, for removal: This API element is subject to removal in a future version.
as of 6.2.13: not necessary anymore due to `getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)`
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