Package com.google.common.reflect
Class AbstractInvocationHandler
- java.lang.Object
-
- com.google.common.reflect.AbstractInvocationHandler
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
public abstract class AbstractInvocationHandler extends java.lang.Object implements java.lang.reflect.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()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
equals(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.Object
handleInvocation(java.lang.Object proxy, java.lang.reflect.Method method, @Nullable 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()
.int
hashCode()
By default delegates toObject.hashCode()
.java.lang.Object
invoke(java.lang.Object proxy, java.lang.reflect.Method method, @Nullable java.lang.Object[] 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[])
.java.lang.String
toString()
By default delegates toObject.toString()
.
-
-
-
Constructor Detail
-
AbstractInvocationHandler
public AbstractInvocationHandler()
-
-
Method Detail
-
invoke
@CheckForNull public final java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, @CheckForNull @Nullable java.lang.Object[] args) throws java.lang.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 interfacejava.lang.reflect.InvocationHandler
- Throws:
java.lang.Throwable
-
handleInvocation
@CheckForNull protected abstract java.lang.Object handleInvocation(java.lang.Object proxy, java.lang.reflect.Method method, @Nullable java.lang.Object[] args) throws java.lang.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:
java.lang.Throwable
-
equals
public boolean equals(@CheckForNull 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: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.
- Overrides:
equals
in 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:
hashCode
in 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:
toString
in classjava.lang.Object
-
-