|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.core.BridgeMethodResolver
public abstract class BridgeMethodResolver
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.
Constructor Summary | |
---|---|
BridgeMethodResolver()
|
Method Summary | |
---|---|
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 . |
static boolean |
isJava6VisibilityBridgeMethodPair(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 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 . |
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BridgeMethodResolver()
Method Detail |
---|
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 introspect
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 method
null
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 isJava6VisibilityBridgeMethodPair(java.lang.reflect.Method bridgeMethod, java.lang.reflect.Method bridgedMethod)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |