Package com.google.common.reflect
Class AbstractInvocationHandler
- java.lang.Object
-
- com.google.common.reflect.AbstractInvocationHandler
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
- Direct Known Subclasses:
DummyProxy.DummyHandler,ForwardingWrapperTester.InteractionTester,FreshValueGenerator.FreshInvocationHandler
@Beta public abstract class AbstractInvocationHandler extends java.lang.Object implements java.lang.reflect.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
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.Object[]NO_ARGS
-
Constructor Summary
Constructors Constructor Description AbstractInvocationHandler()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanequals(java.lang.Object obj)By default delegates toObject.equals(java.lang.Object)so instances are only equal if they are identical.protected abstract java.lang.ObjecthandleInvocation(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, exceptObject.equals(java.lang.Object),Object.hashCode()andObject.toString().inthashCode()By default delegates toObject.hashCode().java.lang.Objectinvoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] 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[]).private static booleanisProxyOfSameInterfaces(java.lang.Object arg, java.lang.Class<?> proxyClass)java.lang.StringtoString()By default delegates toObject.toString().
-
-
-
Method Detail
-
invoke
public final java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwableproxy.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 interfacejava.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.Throwableinvoke(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:
java.lang.Throwable
-
equals
public boolean equals(java.lang.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.
- Overrides:
equalsin classjava.lang.Object
-
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.- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.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.- Overrides:
toStringin classjava.lang.Object
-
isProxyOfSameInterfaces
private static boolean isProxyOfSameInterfaces(java.lang.Object arg, java.lang.Class<?> proxyClass)
-
-