Class AbstractInvocationHandler

  • All Implemented Interfaces:
    java.lang.reflect.InvocationHandler
    Direct Known Subclasses:
    DummyProxy.DummyHandler, ForwardingWrapperTester.InteractionTester, FreshValueGenerator.FreshInvocationHandler

    public abstract class AbstractInvocationHandler
    extends java.lang.Object
    implements java.lang.reflect.InvocationHandler
    Abstract implementation of InvocationHandler that handles Object.equals(java.lang.Object), Object.hashCode() and Object.toString(). For example:
     class Unsupported extends AbstractInvocationHandler {
       protected Object handleInvocation(Object proxy, Method method, Object[] args) {
         throw new UnsupportedOperationException();
       }
     }
    
     CharSequence unsupported = Reflection.newProxy(CharSequence.class, new Unsupported());
     
    Since:
    12.0
    • Field Detail

      • NO_ARGS

        private static final java.lang.Object[] NO_ARGS
    • Constructor Detail

      • AbstractInvocationHandler

        public AbstractInvocationHandler()
    • Method Detail

      • invoke

        @CheckForNull
        public final java.lang.Object invoke​(java.lang.Object proxy,
                                             java.lang.reflect.Method method,
                                             @CheckForNull
                                             java.lang.Object[] args)
                                      throws java.lang.Throwable
        Specified by:
        invoke in interface java.lang.reflect.InvocationHandler
        Throws:
        java.lang.Throwable
      • equals

        public boolean equals​(@CheckForNull
                              java.lang.Object obj)
        By default delegates to Object.equals(java.lang.Object) so instances are only equal if they are identical. proxy.equals(argument) returns true if:
        • proxy and argument are of the same type
        • and this method returns true for the InvocationHandler of argument

        Subclasses can override this method to provide custom equality.

        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        By default delegates to Object.hashCode(). The dynamic proxies' hashCode() will delegate to this method. Subclasses can override this method to provide custom equality.
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        By default delegates to Object.toString(). The dynamic proxies' toString() will delegate to this method. Subclasses can override this method to provide custom string representation for the proxies.
        Overrides:
        toString in class java.lang.Object
      • isProxyOfSameInterfaces

        private static boolean isProxyOfSameInterfaces​(java.lang.Object arg,
                                                       java.lang.Class<?> proxyClass)