com.google.common.reflect
Class AbstractInvocationHandler

java.lang.Object
  extended by com.google.common.reflect.AbstractInvocationHandler
All Implemented Interfaces:
java.lang.reflect.InvocationHandler

@Beta
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().

Since:
12.0

Constructor Summary
AbstractInvocationHandler()
           
 
Method Summary
 boolean equals(java.lang.Object obj)
          By default delegates to Object.equals(java.lang.Object) so instances are only equal if they are identical.
protected abstract  java.lang.Object handleInvocation(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
          invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) delegates to this method upon any method invocation on the proxy instance, except Object.equals(java.lang.Object), Object.hashCode() and Object.toString().
 int hashCode()
          By default delegates to Object.hashCode().
 java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
          
 java.lang.String toString()
          By default delegates to Object.toString().
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractInvocationHandler

public AbstractInvocationHandler()
Method Detail

invoke

public final java.lang.Object invoke(java.lang.Object proxy,
                                     java.lang.reflect.Method method,
                                     @Nullable
                                     java.lang.Object[] args)
                              throws java.lang.Throwable

Specified by:
invoke in interface java.lang.reflect.InvocationHandler
Throws:
java.lang.Throwable

handleInvocation

protected abstract java.lang.Object handleInvocation(java.lang.Object proxy,
                                                     java.lang.reflect.Method method,
                                                     java.lang.Object[] args)
                                              throws java.lang.Throwable
invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) delegates to this method upon any method invocation on the proxy instance, except Object.equals(java.lang.Object), Object.hashCode() and Object.toString(). The result will be returned as the proxied method's return value.

Unlike invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]), args will never be null. When the method has no parameter, an empty array is passed in.

Throws:
java.lang.Throwable

equals

public boolean equals(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: 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