Класс RemoteObjectInvocationHandler
- Все реализованные интерфейсы:
Serializable, InvocationHandler, Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
InvocationHandler для использования с удалённым вызовом методов Java (Java RMI). Этот обработчик вызовов можно использовать вместе с экземпляром динамического прокси в качестве замены предварительно сгенерированного класса заглушки. Не предполагается, что приложения будут использовать этот класс напрямую. Удалённый объект, экспортированный для использования динамического прокси с помощью UnicastRemoteObject, содержит экземпляр этого класса в качестве обработчика вызовов прокси.
- Начиная с версии:
- 1.5
- См. также:
Краткое описание полей
Поля, объявленные в классе RemoteObject
ref
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RemoteObjectInvocationHandler |
Создаёт новый RemoteObjectInvocationHandler, сконструированный с указанным RemoteRef. |
Краткое описание методов
Подробное описание конструкторов
RemoteObjectInvocationHandler
public RemoteObjectInvocationHandler(RemoteRef ref)
RemoteObjectInvocationHandler, сконструированный с указанным RemoteRef.- Параметры:
-
ref— удалённая ссылка - Исключения:
-
NullPointerException— еслиrefимеет значениеnull
Подробное описание методов
invoke
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
proxy, и возвращает результат. RemoteObjectInvocationHandler реализует этот метод следующим образом:
Если method является одним из следующих методов, он обрабатывается, как описано ниже:
-
Object.hashCode: возвращает хеш-код прокси. -
Object.equals: возвращаетtrue, если аргумент (args[0]) является экземпляром класса динамического прокси и этот обработчик вызовов равен обработчику вызовов этого аргумента; в противном случае возвращаетfalse. -
Object.toString: возвращает строковое представление прокси.
Если method переопределяет Object.finalize, этот метод игнорируется.
В противном случае удалённый вызов выполняется следующим образом:
- Если
proxyне является экземпляром интерфейсаRemote, выбрасываетсяIllegalArgumentException. - В противном случае для
RemoteRefэтого обработчика вызовов вызывается методinvoke, которому передаютсяproxy,method,argsи хеш метода (определённый в разделе 8.3 «Спецификации удалённого вызова методов Java (RMI)») дляmethod; результат возвращается вызывающему коду. - Если
RemoteRef.invokeвыбрасывает исключение, и это исключение является проверяемым исключением, несовместимым ни с одним исключением в предложенииthrowsметода, реализуемого классомproxy, это исключение оборачивается вUnexpectedException, после чего обёрнутое исключение выбрасывается. В противном случае исключение, выброшенноеinvoke, выбрасывается этим методом.
Семантика этого метода не определена, если аргументы не могли быть созданы экземпляром допустимого класса динамического прокси, содержащего этот обработчик вызовов.
- Определён в:
-
invokeв интерфейсеInvocationHandler - Параметры:
-
proxy— экземпляр прокси, для которого был вызван метод -
method— экземплярMethod, соответствующий методу интерфейса, вызванному для экземпляра прокси -
args— массив объектов, содержащий значения аргументов, переданных при вызове метода для экземпляра прокси, илиnull, если метод не принимает аргументов - Возвращает:
- значение, возвращаемое при вызове метода для экземпляра прокси
- Исключения:
-
Throwable— исключение, выбрасываемое при вызове метода для экземпляра прокси - См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObjectInvocationHandler.html