Package com.google.common.reflect
Class AbstractInvocationHandler
java.lang.Object
com.google.common.reflect.AbstractInvocationHandler
- All Implemented Interfaces:
InvocationHandler
- Direct Known Subclasses:
DummyProxy.DummyHandler
,ForwardingWrapperTester.InteractionTester
,FreshValueGenerator.FreshInvocationHandler
Abstract implementation of
InvocationHandler
that handles Object.equals(java.lang.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
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
By default delegates toObject.equals(java.lang.Object)
so instances are only equal if they are identical.protected abstract Object
handleInvocation
(Object proxy, Method method, 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()
.int
hashCode()
By default delegates toObject.hashCode()
.final Object
proxy.hashCode()
delegates tohashCode()
proxy.toString()
delegates totoString()
proxy.equals(argument)
returns true if:proxy
andargument
are of the same type andequals(java.lang.Object)
returns true for theInvocationHandler
ofargument
other method calls are dispatched tohandleInvocation(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
.private static boolean
isProxyOfSameInterfaces
(Object arg, Class<?> proxyClass) toString()
By default delegates toObject.toString()
.
-
Field Details
-
NO_ARGS
-
-
Constructor Details
-
AbstractInvocationHandler
public AbstractInvocationHandler()
-
-
Method Details
-
invoke
@CheckForNull public final Object invoke(Object proxy, Method method, @CheckForNull Object[] args) throws Throwable proxy.hashCode()
delegates tohashCode()
proxy.toString()
delegates totoString()
proxy.equals(argument)
returns true if:proxy
andargument
are of the same type- and
equals(java.lang.Object)
returns true for theInvocationHandler
ofargument
- other method calls are dispatched to
handleInvocation(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
.
- Specified by:
invoke
in interfaceInvocationHandler
- Throws:
Throwable
-
handleInvocation
@CheckForNull protected abstract Object handleInvocation(Object proxy, Method method, 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[])
,args
will never be null. When the method has no parameter, an empty array is passed in.- Throws:
Throwable
-
equals
By default delegates toObject.equals(java.lang.Object)
so instances are only equal if they are identical.proxy.equals(argument)
returns true if:proxy
andargument
are of the same type- and this method returns true for the
InvocationHandler
ofargument
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. -
isProxyOfSameInterfaces
-