Класс 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.
- C тех пор:
- 1.6
Конструкторы
| Конструктор | Описание |
|---|---|
CompositeDataInvocationHandler(CompositeData compositeData) |
Создаёт обработчик, поддерживаемый заданным |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
CompositeData |
getCompositeData() |
Возвращает |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.lang.reflect.InvocationHandler
invoke
Конструкторы
CompositeDataInvocationHandler
public CompositeDataInvocationHandler(CompositeData compositeData)
Создаёт обработчик, поддерживаемый заданным
CompositeData.
- Параметры:
-
compositeData-CompositeData, который будет предоставлять информацию геттерам. - Исключения:
-
IllegalArgumentException- еслиcompositeDataравно null.
Методы
getCompositeData
public CompositeData getCompositeData()
Возвращает CompositeData, переданное в конструктор.
- Возвращает:
CompositeData, на котором базируется этот обработчик. Это никогда не null.
© 1993, 2020, 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/11/docs/api/java.management/javax/management/openmbean/CompositeDataInvocationHandler.html