Класс CompositeDataInvocationHandler
- Все реализованные интерфейсы:
InvocationHandler
public class CompositeDataInvocationHandler extends Object implements InvocationHandler
Обработчик вызовов (InvocationHandler), который пересылает методы-геттеры в CompositeData. Если у вас есть интерфейс, содержащий только методы-геттеры (например, String getName() или boolean isActive()), то вы можете использовать этот класс в сочетании с классом Proxy, чтобы создать реализацию интерфейса, где каждый геттер возвращает значение соответствующего элемента в CompositeData.
Например, предположим, что у вас есть интерфейс такого вида:
public interface NamedNumber {
public int getNumber();
public String getName();
}
и CompositeData, построенный так:
CompositeData cd =
new CompositeDataSupport(
someCompositeType,
new String[] {"number", "name"},
new Object[] {5, "five"}
);
тогда вы можете создать объект, реализующий NamedNumber и поддерживаемый объектом cd, так:
InvocationHandler handler =
new CompositeDataInvocationHandler(cd);
NamedNumber nn = (NamedNumber)
Proxy.newProxyInstance(NamedNumber.class.getClassLoader(),
new Class[] {NamedNumber.class},
handler);
Вызов nn.getNumber() тогда вернёт **5**. Если первая буква свойства, определяемого геттером, заглавная, то этот обработчик сначала ищет элемент в CompositeData, начинающийся с заглавной буквы, а затем, если его нет, ищет элемент, начинающийся с соответствующей строчной буквы или кода символа. Для геттера, названного getNumber(), обработчик сначала будет искать элемент, названный Number, а затем number. Если геттер называется getnumber(), то элемент должен называться number.
Если метод, переданный в invoke, является методом boolean equals(Object), унаследованным от Object, то он вернёт true тогда и только тогда, когда аргумент является Proxy, чей InvocationHandler также является
CompositeDataInvocationHandler и чей поддерживающий
CompositeData равен (не обязательно идентичен) объекту этого обработчика. Если метод, переданный в invoke, является методом int hashCode(), унаследованным от Object, то он вернёт значение, согласующееся с этим определением
equals: если два объекта равны согласно equals, то у них будет одинаковый hashCode.
- С:
- 1.6
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
CompositeDataInvocationHandler |
Создаёт обработчик, поддерживаемый заданным
CompositeData. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CompositeData |
getCompositeData() |
Возвращает CompositeData, переданный в конструктор. |
Object |
invoke |
Обрабатывает вызов метода на экземпляре прокси и возвращает результат. |
Подробное описание конструкторов
CompositeDataInvocationHandler
public CompositeDataInvocationHandler(CompositeData compositeData)
Создаёт обработчик, поддерживаемый заданным
CompositeData.
- Параметры:
-
compositeData-CompositeData, который будет предоставлять информацию геттерам. - Исключения:
-
IllegalArgumentException- еслиcompositeDataравно null.
Подробное описание методов
getCompositeData
public CompositeData getCompositeData()
CompositeData, переданный в конструктор.- Возвращает:
CompositeData, на котором основан этот обработчик. Этот объект никогда не равен null.
invoke
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
InvocationHandler- Указано в:
-
invokeв интерфейсеInvocationHandler - Параметры:
-
proxy- экземпляр прокси, на котором был вызван метод -
method- экземплярMethod, соответствующий интерфейсному методу, вызванному на прокси-экземпляре. Объявляющий класс объектаMethodбудет интерфейсом, в котором был объявлен метод, который может быть суперинтерфейсом прокси-интерфейса, который класс прокси наследует через метод. -
args- массив объектов, содержащих значения аргументов, переданных в вызов метода на прокси-экземпляре, илиnull, если интерфейсный метод не принимает аргументов. Аргументы примитивных типов обернуты в экземпляры соответствующего обертывающего класса примитивного типа, например,java.lang.Integerилиjava.lang.Boolean. - Возвращает:
- значение, которое должно быть возвращено вызовом метода на прокси-экземпляре. Если объявленный возвращаемый тип интерфейсного метода — примитивный тип, то возвращаемое значение этого метода должно быть экземпляром соответствующего обертывающего класса примитивного типа; в противном случае оно должно быть типом, присваиваемым объявленному возвращаемому типу. Если возвращаемое значение этим методом равно
null, а возвращаемый тип интерфейсного метода — примитивный, то метод вызова на прокси-экземпляре броситNullPointerException. Если возвращаемое значение этим методом по другим причинам несовместимо с объявленным возвращаемым типом интерфейсного метода, как описано выше, метод вызова на прокси-экземпляре броситClassCastException. - Исключения:
-
Throwable- исключение для вызова из метода вызова на прокси-экземпляре. Тип исключения должен быть присваиваемым либо любому из типов исключений, объявленных в блокеthrowsинтерфейсного метода, либо к исключениямjava.lang.RuntimeExceptionилиjava.lang.Error. Если брошено проверяемое исключение этим методом, которое не может быть присвоено ни одному из типов исключений, объявленных в блокеthrowsинтерфейсного метода, тоUndeclaredThrowableException, содержащий исключение, сгенерированное этим методом, будет брошено при вызове метода на прокси-экземпляре. - См. также:
© 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://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/openmbean/CompositeDataInvocationHandler.html