Spec-Zone .ru
спецификации, руководства, описания, API
|
public class CompositeDataInvocationHandler extends Object implements InvocationHandler
InvocationHandler
это вперед методы метода get к a CompositeData
. Если у Вас есть интерфейс, который содержит только методы метода get (такой как String getName()
или boolean isActive()
) тогда можно использовать этот класс в соединении с Proxy
класс, чтобы произвести реализацию интерфейса, куда каждый метод get возвращает значение соответствующего элемента в a CompositeData
.
Например, предположите, что у Вас есть интерфейс как это:
и apublic interface NamedNumber { public int getNumber(); public String getName(); }
CompositeData
созданный как это: тогда можно создать объектную реализациюCompositeData cd = newCompositeDataSupport
( 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.
Если первая буква свойства, определенного методом get, будет капиталом, то этот обработчик будет сначала искать элемент в CompositeData
начинание с капитала, тогда, если это не находится для элемента, начинающегося с соответствующей строчной буквы или кодовой точки. Для вызванного метода get getNumber()
, обработчик будет сначала искать вызванный элемент Number
, тогда для number
. Если метода get вызывают getnumber()
, тогда элемент нужно вызвать number
.
Если метод, данный invoke
метод boolean equals(Object)
наследованный от Object
, тогда это возвратит true, если и только если параметром является a Proxy
чей InvocationHandler
также a CompositeDataInvocationHandler
и чья поддержка CompositeData
равно (не обязательно идентичный) к этому объекту. Если метод, данный invoke
метод int hashCode()
наследованный от Object
, тогда это возвратит значение, которое является непротиворечивым с этим определением equals
: если два объекта равны согласно equals
, тогда у них будет то же самое hashCode
.
Конструктор и Описание |
---|
CompositeDataInvocationHandler(CompositeData compositeData)
Создайте обработчик, поддержанный данным
CompositeData . |
Модификатор и Тип | Метод и Описание |
---|---|
CompositeData |
getCompositeData()
Возвратитесь
CompositeData это было предоставлено конструктору. |
Объект |
invoke(Object proxy, Method method, Object[] args)
Обрабатывает вызов метода на экземпляре прокси и возвращает результат.
|
public CompositeDataInvocationHandler(CompositeData compositeData)
Создайте обработчик, поддержанный данным CompositeData
.
compositeData
- CompositeData
это предоставит информацию методам get.IllegalArgumentException
- если compositeData
нуль.public CompositeData getCompositeData()
CompositeData
это было предоставлено конструктору.CompositeData
то, что этот обработчик поддерживается. Это никогда не нуль.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
и тип возврата интерфейсного метода примитивен, тогда a NullPointerException
будет брошен вызовом метода на экземпляре прокси. Если значение, возвращенное этим методом, является иначе не совместимым с объявленным типом возврата интерфейсного метода как описано выше, a ClassCastException
будет брошен вызовом метода на экземпляре прокси.Throwable
- исключение, чтобы бросить от вызова метода на экземпляре прокси. Тип исключения должен быть присваиваемым любой любому из типов исключения, объявленных в throws
пункт интерфейсного метода или к типам исключения непроверенным java.lang.RuntimeException
или java.lang.Error
. Если проверенное исключение выдается этим методом, который не присваиваем любому из типов исключения, объявленных в throws
пункт интерфейсного метода, затем UndeclaredThrowableException
содержа исключение, которое было выдано этим методом, будет брошен вызовом метода на экземпляре прокси.UndeclaredThrowableException
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.