Spec-Zone.ru › OpenJDK 17

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

Spec-Zone.ru

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