Package com.google.common.reflect
Class AbstractInvocationHandler
- java.lang.Object
- 
- com.google.common.reflect.AbstractInvocationHandler
 
- 
- All Implemented Interfaces:
- InvocationHandler
 
 public abstract class AbstractInvocationHandler extends Object implements InvocationHandler Abstract implementation ofInvocationHandlerthat handlesObject.equals(java.lang.Object),Object.hashCode()andObject.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
- Author:
- Ben Yu
 
- 
- 
Constructor SummaryConstructors Constructor Description AbstractInvocationHandler()
 - 
Method SummaryAll Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanequals(Object obj)By default delegates toObject.equals(java.lang.Object)so instances are only equal if they are identical.protected abstract ObjecthandleInvocation(Object proxy, Method method, @Nullable 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, exceptObject.equals(java.lang.Object),Object.hashCode()andObject.toString().inthashCode()By default delegates toObject.hashCode().Objectinvoke(Object proxy, Method method, @Nullable Object[] args)Processes a method invocation on a proxy instance and returns the result.StringtoString()By default delegates toObject.toString().
 
- 
- 
- 
Constructor Detail- 
AbstractInvocationHandlerpublic AbstractInvocationHandler() 
 
- 
 - 
Method Detail- 
invoke@CheckForNull public final Object invoke(Object proxy, Method method, @CheckForNull @Nullable Object[] args) throws Throwable Processes a method invocation on a proxy instance and returns the result. This method will be invoked on an invocation handler when a method is invoked on a proxy instance that it is associated with.- proxy.hashCode()delegates to- hashCode()
- proxy.toString()delegates to- toString()
- proxy.equals(argument)returns true if:- proxyand- argumentare of the same type
- and equals(java.lang.Object)returns true for theInvocationHandlerofargument
 
- other method calls are dispatched to handleInvocation(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]).
 - Specified by:
- invokein interface- InvocationHandler
- Parameters:
- proxy- the proxy instance that the method was invoked on
- method- the- Methodinstance corresponding to the interface method invoked on the proxy instance. The declaring class of the- Methodobject will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.
- args- an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or- nullif interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such as- java.lang.Integeror- java.lang.Boolean.
- Returns:
- the value to return from the method invocation on the
 proxy instance.  If the declared return type of the interface
 method is a primitive type, then the value returned by
 this method must be an instance of the corresponding primitive
 wrapper class; otherwise, it must be a type assignable to the
 declared return type.  If the value returned by this method is
 nulland the interface method's return type is primitive, then aNullPointerExceptionwill be thrown by the method invocation on the proxy instance. If the value returned by this method is otherwise not compatible with the interface method's declared return type as described above, aClassCastExceptionwill be thrown by the method invocation on the proxy instance.
- Throws:
- Throwable- the exception to throw from the method invocation on the proxy instance. The exception's type must be assignable either to any of the exception types declared in the- throwsclause of the interface method or to the unchecked exception types- java.lang.RuntimeExceptionor- java.lang.Error. If a checked exception is thrown by this method that is not assignable to any of the exception types declared in the- throwsclause of the interface method, then an- UndeclaredThrowableExceptioncontaining the exception that was thrown by this method will be thrown by the method invocation on the proxy instance.
- See Also:
- UndeclaredThrowableException
 
 - 
handleInvocation@CheckForNull protected abstract Object handleInvocation(Object proxy, Method method, @Nullable Object[] args) throws Throwable invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])delegates to this method upon any method invocation on the proxy instance, exceptObject.equals(java.lang.Object),Object.hashCode()andObject.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[]),argswill never be null. When the method has no parameter, an empty array is passed in.- Throws:
- Throwable
 
 - 
equalspublic boolean equals(@CheckForNull Object obj) By default delegates toObject.equals(java.lang.Object)so instances are only equal if they are identical.proxy.equals(argument)returns true if:- proxyand- argumentare of the same type
- and this method returns true for the InvocationHandlerofargument
 Subclasses can override this method to provide custom equality. - Overrides:
- equalsin class- Object
- Parameters:
- obj- the reference object with which to compare.
- Returns:
- trueif this object is the same as the obj argument;- falseotherwise.
- See Also:
- Object.hashCode(),- HashMap
 
 - 
hashCodepublic int hashCode() By default delegates toObject.hashCode(). The dynamic proxies'hashCode()will delegate to this method. Subclasses can override this method to provide custom equality.- Overrides:
- hashCodein class- Object
- Returns:
- a hash code value for this object.
- See Also:
- Object.equals(java.lang.Object),- System.identityHashCode(java.lang.Object)
 
 - 
toStringpublic String toString() By default delegates toObject.toString(). The dynamic proxies'toString()will delegate to this method. Subclasses can override this method to provide custom string representation for the proxies.
 
- 
 
-