Class AbstractInvocationHandler
java.lang.Object
com.google.common.reflect.AbstractInvocationHandler
- All Implemented Interfaces:
InvocationHandler
Abstract implementation of
InvocationHandler that handles Object.equals(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
- Author:
- Ben Yu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanBy default delegates toObject.equals(Object)so instances are only equal if they are identical.handleInvocation(Object proxy, Method method, @Nullable Object[] args) invoke(Object, Method, Object[])delegates to this method upon any method invocation on the proxy instance, exceptObject.equals(Object),Object.hashCode()andObject.toString().inthashCode()By default delegates toObject.hashCode().proxy.hashCode()delegates tohashCode()proxy.toString()delegates totoString()proxy.equals(argument)returns true if:proxyandargumentare of the same type andequals(Object)returns true for theInvocationHandlerofargumentother method calls are dispatched tohandleInvocation(Object, Method, Object[]).toString()By default delegates toObject.toString().
-
Constructor Details
-
AbstractInvocationHandler
public AbstractInvocationHandler()Constructor for use by subclasses.
-
-
Method Details
-
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(Object)returns true for theInvocationHandlerofargument
- other method calls are dispatched to
handleInvocation(Object, Method, Object[]).
- Specified by:
invokein interfaceInvocationHandler- Throws:
Throwable
-
handleInvocation
protected abstract @Nullable Object handleInvocation(Object proxy, Method method, @Nullable Object[] args) throws Throwable invoke(Object, Method, Object[])delegates to this method upon any method invocation on the proxy instance, exceptObject.equals(Object),Object.hashCode()andObject.toString(). The result will be returned as the proxied method's return value.Unlike
invoke(Object, Method, Object[]),argswill never be null. When the method has no parameter, an empty array is passed in.- Throws:
Throwable
-
equals
By default delegates toObject.equals(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
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.
-