Spec-Zone.ru › OpenJDK 24

Класс 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)
Обрабатывает вызов метода на экземпляре прокси и возвращает результат.

Методы, объявленные в классе java.lang.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

© 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

Spec-Zone.ru

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