Класс 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 |
getCompositeData() |
Возвращает CompositeData, переданный конструктору. |
Object |
invoke |
Обрабатывает вызов метода для экземпляра прокси и возвращает результат. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект некоторому другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до тех пор, пока он не будет пробуждён, обычно в результате уведомления или прерывания. |
final void |
wait |
Приостанавливает текущий поток до тех пор, пока он не будет пробуждён, обычно в результате уведомления или прерывания, либо пока не истечёт заданный интервал реального времени. |
final void |
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может быть интерфейс прокси, один из его суперинтерфейсов или классObject -
args— массив объектов, содержащий значения аргументов, переданных при вызове метода для экземпляра прокси, илиnull, если вызванный метод не принимает аргументов. Аргументы примитивных типов упаковываются в экземпляры соответствующего класса-оболочки примитивного типа, напримерjava.lang.Integerилиjava.lang.Boolean. - Возвращает:
- значение, возвращаемое при вызове метода для экземпляра прокси. Если объявленный тип возвращаемого значения вызванного метода является примитивным типом, то значение, возвращаемое этим методом, должно быть экземпляром соответствующего класса-оболочки примитивного типа; в противном случае оно должно иметь тип, совместимый с объявленным типом возвращаемого значения. Если этот метод возвращает
null, а тип возвращаемого значения вызванного метода является примитивным, то при вызове метода для экземпляра прокси будет выброшено исключениеNullPointerException. Если возвращённое этим методом значение несовместимо с объявленным типом возвращаемого значения вызванного метода, как описано выше, то при вызове метода для экземпляра прокси будет выброшено исключениеClassCastException. - Исключения:
-
Throwable— исключение, которое следует выбросить при вызове метода для экземпляра прокси. Тип исключения должен быть совместим с одним из типов исключений, объявленных в предложенииthrowsвызванного метода, либо с одним из непроверяемых типов исключенийjava.lang.RuntimeExceptionилиjava.lang.Error. Если этот метод выбрасывает проверяемое исключение, несовместимое ни с одним из типов исключений, объявленных в предложенииthrowsвызванного метода, то при вызове метода для экземпляра прокси будет выброшено исключение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.