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 Summary
Constructors Constructor Description AbstractInvocationHandler()Constructor for use by subclasses.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanequals(@Nullable Object obj)By default delegates toObject.equals(java.lang.Object)so instances are only equal if they are identical.protected abstract @Nullable 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().@Nullable Objectinvoke(Object proxy, Method method, @Nullable Object @Nullable [] args)proxy.hashCode()delegates tohashCode()proxy.toString()delegates totoString()proxy.equals(argument)returns true if:proxyandargumentare of the same type andequals(java.lang.Object)returns true for theInvocationHandlerofargumentother method calls are dispatched tohandleInvocation(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]).StringtoString()By default delegates toObject.toString().
-
-
-
Constructor Detail
-
AbstractInvocationHandler
public AbstractInvocationHandler()
Constructor for use by subclasses.
-
-
Method Detail
-
invoke
public final @Nullable Object invoke(Object proxy, Method method, @Nullable Object @Nullable [] args) throws Throwable
proxy.hashCode()delegates tohashCode()proxy.toString()delegates totoString()proxy.equals(argument)returns true if:proxyandargumentare 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 interfaceInvocationHandler- Throws:
Throwable
-
handleInvocation
protected abstract @Nullable 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
-
equals
public boolean equals(@Nullable 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:proxyandargumentare of the same type- and this method returns true for the
InvocationHandlerofargument
Subclasses can override this method to provide custom equality.
-
hashCode
public 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.
-
toString
public 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.
-
-