类 BridgeMethodResolver
java.lang.Object
cn.taketoday.core.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.
- 从以下版本开始:
- 4.0
- 作者:
- Rob Harrop, Juergen Hoeller, Phillip Webb, TODAY 2021/9/6 21:51
-
字段概要
字段 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static MethodfindBridgedMethod(Method bridgeMethod) Find the 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.private static booleanisBridgedCandidateFor(Method candidateMethod, Method bridgeMethod) Returnstrueif the supplied 'candidateMethod' can be consider a validate 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 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
public BridgeMethodResolver()
-
-
方法详细资料
-
findBridgedMethod
Find the 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- 返回:
- the original method (either the bridged method or the passed-in method if no more specific one could be found)
-
isBridgedCandidateFor
Returnstrueif the supplied 'candidateMethod' can be consider a validate candidate for theMethodthat isbridgedby the suppliedbridge Method. This method performs inexpensive checks and can be used 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.java.com/view_bug.do?bug_id=6342411. See also https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html- 返回:
- whether signatures match as described
-