- java.lang.Object
-
- java.rmi.server.RemoteObject
-
- java.rmi.server.RemoteObjectInvocationHandler
-
- 实现的所有接口
-
Serializable
,InvocationHandler
,Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
用于Java远程方法调用(Java RMI)的InvocationHandler
接口的实现。 此调用处理程序可与动态代理实例结合使用,以替代预生成的存根类。预计应用程序不会直接使用此类。 导出为使用
UnicastRemoteObject
或Activatable
的动态代理的远程对象具有此类的实例作为该代理的调用处理程序。- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
字段汇总
-
声明的属性在类 java.rmi.server.RemoteObject
ref
-
-
构造方法摘要
构造方法 构造器 描述 RemoteObjectInvocationHandler(RemoteRef ref)
创建一个新的RemoteObjectInvocationHandler
用指定的构建RemoteRef
。
-
-
-
构造方法详细信息
-
RemoteObjectInvocationHandler
public RemoteObjectInvocationHandler(RemoteRef ref)
创建一个新的RemoteObjectInvocationHandler
用指定的构建RemoteRef
。- 参数
-
ref
- 远程参考 - 异常
-
NullPointerException
- 如果ref
是null
-
-
方法详细信息
-
invoke
public Object invoke(Object proxy, 方法 method, Object[] args) throws Throwable
处理在封装代理实例proxy
上进行的方法调用,并返回结果。RemoteObjectInvocationHandler
实现此方法如下:如果
method
是以下方法之一,method
如下所述进行处理:-
Object.hashCode
:返回代理的哈希码值。 -
Object.equals
:返回true
如果参数(args[0]
)是一个动态代理类的一个实例和本调用处理程序等于自变量的调用处理程序,并返回false
否则。 -
Object.toString
:返回代理的字符串表示形式。
如果
method
覆盖Object.finalize
,则忽略它。否则,远程调用如下:
- 如果
proxy
不是接口Remote
的实例,则抛出IllegalArgumentException
。 - 否则,
invoke
方法被调用在该调用处理程序的RemoteRef
,传递proxy
,method
,args
,并且该方法散列(在“Java远程方法调用(RMI)规范”的第8.3节中定义)method
,并且将结果返回。 - 如果
RemoteRef.invoke
抛出异常,并且该异常是一个已检查的异常,该异常不能分配给proxy
类实现的方法的throws
子句中的任何异常,则该异常将包含在UnexpectedException
中并且抛出包装的异常。 否则,此方法抛出invoke
抛出的异常。
如果参数不能由包含此调用处理程序的某个有效动态代理类的实例生成,则此方法的语义未指定。
- Specified by:
-
invoke
在界面InvocationHandler
- 参数
-
proxy
- 调用该方法的代理实例 -
method
- 与代理实例上调用的接口方法对应的方法
实例 -
args
- 包含代理实例上方法调用中传递的参数值的对象数组,如果方法不带参数,null
- 结果
- 从代理实例上的方法调用返回的值
- 异常
-
Throwable
- 从代理实例上的方法调用中抛出的异常 - 另请参见:
-
UndeclaredThrowableException
-
-
-