Class BridgeMethodResolver
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 TypeMethodDescriptionstatic Method
findBridgedMethod
(Method bridgeMethod) Find the local original method for the suppliedbridge Method
.static Method
getMostSpecificMethod
(Method bridgeMethod, Class<?> targetClass) Determine the most specific method for the suppliedbridge 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.
-
Method Details
-
findBridgedMethod
Find the local original method for the suppliedbridge Method
.It is safe to call this method passing in a non-bridge
Method
instance. In such a case, the suppliedMethod
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
Determine the most specific method for the suppliedbridge 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<?>)
andfindBridgedMethod(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 classtargetClass
- the target class to find methods on- Returns:
- the original method (either the bridged method or the passed-in method if no more specific one could be found)
- Since:
- 6.1.3
- See Also:
-
isVisibilityBridgeMethodPair
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 https://bugs.openjdk.org/browse/JDK-6342411. See also https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html- Returns:
- whether signatures match as described
-