Class DelegatingInvocationHandler

  • All Implemented Interfaces:
    java.lang.reflect.InvocationHandler

    public abstract class DelegatingInvocationHandler
    extends java.lang.Object
    implements java.lang.reflect.InvocationHandler
    A class derived from DelegatingInvocationHandler handles a method call by looking for a method in itself with identical parameters. If no such method is found, it forwards the call to a fallback object, which must implement all of the interfaces which this proxy implements.

    It is useful in creating a wrapper class around an interface which may change over time.

    Example:

    import java.sql.Connection;
     Connection connection = ...;
     Connection tracingConnection = (Connection) Proxy.newProxyInstance(
         null,
         new Class[] {Connection.class},
         new DelegatingInvocationHandler() {
             protected Object getTarget() {
                 return connection;
             }
             Statement createStatement() {
                 System.out.println("statement created");
                 return connection.createStatement();
             }
         });
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract java.lang.Object getTarget()
      Returns the object to forward method calls to, should the derived class not implement the method.
      java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)  
      • Methods inherited from class java.lang.Object

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

      • DelegatingInvocationHandler

        public DelegatingInvocationHandler()
    • Method Detail

      • invoke

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

        protected abstract java.lang.Object getTarget()
        Returns the object to forward method calls to, should the derived class not implement the method. Generally, this object will be a member of the derived class, supplied as a parameter to its constructor.