Spec-Zone.ru › OpenJDK 25

Класс CompositeDataInvocationHandler

java.lang.Object
javax.management.openmbean.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)
Создаёт обработчик, связанный с указанным CompositeData.

Краткое описание методов

Модификатор и тип Метод Описание
CompositeData getCompositeData()
Возвращает CompositeData, переданный конструктору.
Object invoke(Object proxy, Method method, Object[] args)
Обрабатывает вызов метода для экземпляра прокси и возвращает результат.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

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, содержащее исключение, выброшенное этим методом.
См. также:
  • UndeclaredThrowableException

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API