Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект некоторому другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до тех пор, пока он не будет пробуждён, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до тех пор, пока он не будет пробуждён, обычно в результате уведомления или прерывания, либо пока не истечёт заданный интервал реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до тех пор, пока он не будет пробуждён, обычно в результате уведомления или прерывания, либо пока не истечёт заданный интервал реального времени.

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

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 может быть интерфейс прокси, один из его суперинтерфейсов или класс Object
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, 2026, 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.

Spec-Zone.ru

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