org.springframework.core

Class BridgeMethodResolver

  • java.lang.Object
    • org.springframework.core.BridgeMethodResolver


  • public final class BridgeMethodResolver
    extends java.lang.Object
    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.

    Since:
    2.0
    Author:
    Rob Harrop, Juergen Hoeller, Phillip Webb
    • Method Summary

      All Methods Static Methods Concrete Methods 
      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.
      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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • findBridgedMethod

        public static java.lang.reflect.Method findBridgedMethod(java.lang.reflect.Method bridgeMethod)
        Find the original method for the supplied 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.

        Parameters:
        bridgeMethod - the method to introspect
        Returns:
        the original method (either the bridged method or the passed-in method if no more specific one could be found)
      • isVisibilityBridgeMethodPair

        public 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. If the parameter and return types are the same, it is a 'visibility' bridge method introduced in Java 6 to fix http://bugs.sun.com/view_bug.do?bug_id=6342411. See also http://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.php
        Returns:
        whether signatures match as described