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.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> typeVariableMap)
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.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> typeVariableMap)
Returns
true if the Type signature of both the supplied
generic Method and concrete Method
are equal after resolving all TypeVariables using the supplied
TypeVariable Map, 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 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 foundprivate 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.static boolean isBridgeMethodFor(java.lang.reflect.Method bridgeMethod, java.lang.reflect.Method candidateMethod, java.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> typeVariableMap)
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.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> typeVariableMap)
true
if the Type
signature of both the supplied
generic Method
and concrete Method
are equal after resolving all TypeVariables
using the supplied
TypeVariable Map, 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)