类 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.
- 从以下版本开始:
- 4.0 2021/9/6 21:51
- 作者:
- Rob Harrop, Juergen Hoeller, Phillip Webb, Harry Yang
-
字段概要
字段 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static MethodfindBridgedMethod(Method bridgeMethod) Find the local original method for the suppliedbridge Method.private static MethodfindGenericDeclaration(Method bridgeMethod) Searches for the genericMethoddeclaration whose erased signature matches that of the supplied bridge method.static MethodgetMostSpecificMethod(Method bridgeMethod, Class<?> targetClass) Determine the most specific method for the suppliedbridge Methodin the given class hierarchy, even if not available on the local declaring class.private static booleanisBridgedCandidateFor(Method candidateMethod, Method bridgeMethod) Returnstrueif the supplied 'candidateMethod' can be considered a valid candidate for theMethodthat isbridgedby the suppliedbridge Method.(专用程序包) static booleanisBridgeMethodFor(Method bridgeMethod, Method candidateMethod, Class<?> declaringClass) private static booleanisResolvedTypeMatch(Method genericMethod, Method candidateMethod, Class<?> declaringClass) Returnstrueif theTypesignature of both the suppliedgeneric Methodand concreteMethodare equal after resolving all types against the declaringType, otherwise returnsfalse.static booleanisVisibilityBridgeMethodPair(Method bridgeMethod, Method bridgedMethod) Compare the signatures of the bridge method and the method which it bridges.private static MethodresolveBridgeMethod(Method bridgeMethod, Class<?> targetClass) private static MethodsearchCandidates(ArrayList<Method> candidateMethods, Method bridgeMethod) Searches for the bridged method in the given candidates.private static MethodsearchForMatch(Class<?> type, Method bridgeMethod) private static MethodsearchInterfaces(Class<?>[] interfaces, Method bridgeMethod)
-
字段详细资料
-
cache
-
-
构造器详细资料
-
BridgeMethodResolver
private BridgeMethodResolver()
-
-
方法详细资料
-
findBridgedMethod
Find the local original method for the suppliedbridge Method.It is safe to call this method passing in a non-bridge
Methodinstance. In such a case, the suppliedMethodinstance is returned directly to the caller. Callers are not required to check for bridging before calling this method.- 参数:
bridgeMethod- the method to introspect against its declaring class- 返回:
- the original method (either the bridged method or the passed-in method if no more specific one could be found)
- 另请参阅:
-
getMostSpecificMethod
Determine the most specific method for the suppliedbridge Methodin the given class hierarchy, even if not available on the local declaring class.This is effectively a combination of
ReflectionUtils.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).- 参数:
bridgeMethod- the method to introspect against the given target classtargetClass- the target class to find methods on- 返回:
- the original method (either the bridged method or the passed-in method if no more specific one could be found)
- 另请参阅:
-
resolveBridgeMethod
-
isBridgedCandidateFor
Returnstrueif the supplied 'candidateMethod' can be considered a valid candidate for theMethodthat isbridgedby the suppliedbridge Method. This method performs inexpensive checks and can be used to quickly filter for a set of possible matches. -
searchCandidates
@Nullable private static Method searchCandidates(ArrayList<Method> candidateMethods, Method bridgeMethod) Searches for the bridged method in the given candidates.- 参数:
candidateMethods- the List of candidate MethodsbridgeMethod- the bridge method- 返回:
- the bridged method, or
nullif none found
-
isBridgeMethodFor
-
isResolvedTypeMatch
private static boolean isResolvedTypeMatch(Method genericMethod, Method candidateMethod, Class<?> declaringClass) Returnstrueif theTypesignature of both the suppliedgeneric Methodand concreteMethodare equal after resolving all types against the declaringType, otherwise returnsfalse. -
findGenericDeclaration
Searches for the genericMethoddeclaration whose erased signature matches that of the supplied bridge method.- 抛出:
IllegalStateException- if the generic declaration cannot be found
-
searchInterfaces
-
searchForMatch
-
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- 返回:
- whether signatures match as described
-