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
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.