Класс 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://docs.oracle.com/en/java/javase/25/docs/api/java.management/javax/management/openmbean/CompositeDataInvocationHandler.html