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()
Constructor for use by subclasses.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
equals(@Nullable java.lang.Object obj)
By default delegates toObject.equals(java.lang.Object)
so instances are only equal if they are identical.protected abstract @Nullable 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()
.@Nullable java.lang.Object
invoke(java.lang.Object proxy, java.lang.reflect.Method method, @Nullable java.lang.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[])
.java.lang.String
toString()
By default delegates toObject.toString()
.
-
-
-
Constructor Detail
-
AbstractInvocationHandler
public AbstractInvocationHandler()
Constructor for use by subclasses.
-
-
Method Detail
-
invoke
public final @Nullable java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, @Nullable java.lang.Object @Nullable [] 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
protected abstract @Nullable 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(@Nullable 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
-
-