public abstract class BridgeMethodResolver
extends java.lang.Object
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.
| Constructor and Description |
|---|
BridgeMethodResolver() |
| Modifier and Type | Method and Description |
|---|---|
static java.lang.reflect.Method |
findBridgedMethod(java.lang.reflect.Method bridgeMethod)
Find the original method for the supplied
bridge Method. |
private static java.lang.reflect.Method |
findGenericDeclaration(java.lang.reflect.Method bridgeMethod)
Searches for the generic
Method declaration whose erased signature
matches that of the supplied bridge method. |
private static boolean |
isBridgedCandidateFor(java.lang.reflect.Method candidateMethod,
java.lang.reflect.Method bridgeMethod)
Returns
true if the supplied 'candidateMethod' can be
consider a validate candidate for the Method that is bridged
by the supplied bridge Method. |
(package private) static boolean |
isBridgeMethodFor(java.lang.reflect.Method bridgeMethod,
java.lang.reflect.Method candidateMethod,
java.lang.Class<?> declaringClass)
Determines whether or not the bridge
Method is the bridge for the
supplied candidate Method. |
private static boolean |
isResolvedTypeMatch(java.lang.reflect.Method genericMethod,
java.lang.reflect.Method candidateMethod,
java.lang.Class<?> declaringClass)
Returns
true if the Type signature of both the supplied
generic Method and concrete Method
are equal after resolving all types against the declaringType, otherwise
returns false. |
static boolean |
isVisibilityBridgeMethodPair(java.lang.reflect.Method bridgeMethod,
java.lang.reflect.Method bridgedMethod)
Compare the signatures of the bridge method and the method which it bridges.
|
private static java.lang.reflect.Method |
searchCandidates(java.util.List<java.lang.reflect.Method> candidateMethods,
java.lang.reflect.Method bridgeMethod)
Searches for the bridged method in the given candidates.
|
private static java.lang.reflect.Method |
searchForMatch(java.lang.Class<?> type,
java.lang.reflect.Method bridgeMethod)
If the supplied
Class has a declared Method whose signature matches
that of the supplied Method, then this matching Method is returned,
otherwise null is returned. |
public static java.lang.reflect.Method findBridgedMethod(java.lang.reflect.Method bridgeMethod)
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.
bridgeMethod - the method to introspectprivate static boolean isBridgedCandidateFor(java.lang.reflect.Method candidateMethod,
java.lang.reflect.Method bridgeMethod)
true if the supplied 'candidateMethod' can be
consider a validate candidate for the Method that is bridged
by the supplied bridge Method. This method performs inexpensive
checks and can be used quickly filter for a set of possible matches.private static java.lang.reflect.Method searchCandidates(java.util.List<java.lang.reflect.Method> candidateMethods,
java.lang.reflect.Method bridgeMethod)
candidateMethods - the List of candidate MethodsbridgeMethod - the bridge methodnull if none foundstatic boolean isBridgeMethodFor(java.lang.reflect.Method bridgeMethod,
java.lang.reflect.Method candidateMethod,
java.lang.Class<?> declaringClass)
Method is the bridge for the
supplied candidate Method.private static java.lang.reflect.Method findGenericDeclaration(java.lang.reflect.Method bridgeMethod)
Method declaration whose erased signature
matches that of the supplied bridge method.java.lang.IllegalStateException - if the generic declaration cannot be foundprivate static boolean isResolvedTypeMatch(java.lang.reflect.Method genericMethod,
java.lang.reflect.Method candidateMethod,
java.lang.Class<?> declaringClass)
true if the Type signature of both the supplied
generic Method and concrete Method
are equal after resolving all types against the declaringType, otherwise
returns false.private static java.lang.reflect.Method searchForMatch(java.lang.Class<?> type,
java.lang.reflect.Method bridgeMethod)
Class has a declared Method whose signature matches
that of the supplied Method, then this matching Method is returned,
otherwise null is returned.public static boolean isVisibilityBridgeMethodPair(java.lang.reflect.Method bridgeMethod,
java.lang.reflect.Method bridgedMethod)