Spec-Zone.ru › OpenJDK 21

Класс 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, 2023, 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/21/docs/api/java.management/javax/management/openmbean/CompositeDataInvocationHandler.html

Spec-Zone.ru

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