public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
InvocationHandler
接口,可与Java远程方法调用(Java RMI的)使用。
此调用处理程序可以与动态代理实例一起使用,作为预生存存根类的替代。
应用程序不会直接使用此类。 导出为使用具有UnicastRemoteObject
或Activatable
的动态代理的远程对象具有该类作为该代理的调用处理程序的实例。
ref
Constructor and Description |
---|
RemoteObjectInvocationHandler(RemoteRef ref)
创建一个新的
RemoteObjectInvocationHandler 构造与指定的
RemoteRef 。
|
public RemoteObjectInvocationHandler(RemoteRef ref)
RemoteObjectInvocationHandler
构造与指定的
RemoteRef
。
ref
- 远程参考
NullPointerException
- 如果
ref
是
null
public Object invoke(Object proxy, 方法 method, Object[] args) throws Throwable
proxy
,并返回结果。
RemoteObjectInvocationHandler
实现这个方法如下:
如果method
是以下方法之一,则按如下所示进行处理:
Object.hashCode
:返回代理的哈希代码值。 Object.equals
:返回true
如果参数( args[0]
)是一个动态代理类的一个实例和本调用处理程序等于自变量的调用处理程序,并返回false
否则。 Object.toString
:返回代理的字符串表示形式。 否则,进行远程呼叫如下:
proxy
不是接口Remote
的实例,则抛出IllegalArgumentException
。 invoke
方法被调用在该调用处理程序的RemoteRef
,传递proxy
, method
, args
,并且该方法散列(在“Java远程方法调用(RMI)规范”的第8.3节中定义) method
,并且将结果返回。 RemoteRef.invoke
和例外是一个检查的异常是不能分配给中的任何异常throws
由实施该方法的子句proxy
的类,则该异常被包装在一个UnexpectedException
和包装的抛出异常。 否则,抛出的异常invoke
通过这种方法抛出。 如果参数不能由包含此调用处理程序的一些有效的动态代理类的实例生成,则该方法的语义是未指定的。
invoke
在接口
InvocationHandler
proxy
- 调用该方法的代理实例
method
-所述
方法
对应于调用代理实例上的接口方法实例
args
-包含的方法调用传递代理实例的参数值的对象的阵列,或
null
如果该方法不采用任何参数
Throwable
- 从代理实例上的方法调用抛出的异常
UndeclaredThrowableException