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 ofInvocationHandler
that 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 boolean
equals(@Nullable Object obj)
By default delegates toObject.equals(java.lang.Object)
so instances are only equal if they are identical.protected abstract @Nullable Object
handleInvocation(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()
.int
hashCode()
By default delegates toObject.hashCode()
.@Nullable Object
invoke(Object proxy, Method method, @Nullable Object @Nullable [] args)
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[])
.String
toString()
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: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
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[])
,args
will 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: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
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.
-
-