Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
56_Java.pdf
Скачиваний:
210
Добавлен:
18.02.2016
Размер:
2.39 Mб
Скачать

Скачано с сайта http://ivc.clan.su

Классы Constructor, Field, Method реализуют интерфейс Member и обеспечивают информацию о членах класса.

Класс Array представляет массивы. Позволяет динамически (в процессе выполнения программы) создавать массивы и работать с ними.

Класс Modifier содержит константы, представляющие в виде кода модификаторы, используемые в объявлениях классов, полей, методов (public, static, final, abstract и т. п.).

Класс Field содержит методы, позволяющие считывать и задавать значения поля объекта: get(),

set().

Класс Constructor содержит метод newInstance(), который позволяет использовать конструкторы с параметрами при создании новых экземпляров соответствующего класса. При вызове метода текущего объекта типа Constructor используется конструктор, представленный в данном объекте, т.е.

отраженный конструктор класса.

Класс Method содержит метод invoke(), позволяющий вызывать метод, представленный в текущем объекте типа Method, т.е. отраженный метод класса. В качестве параметров указываются объект соответствующего класса и массив объектов-параметров метода класса.

Далее — см. пример ReflectionDemo.java.

Понятие интроспекции

Интроспекция — процесс определения визуальной средой свойств, методов, событий Beanкомпонентов, которые в виде соответствующих списков предоставляются разработчикам.

1.В составе пакета java.beans имеется несколько классов, поддерживающих интроспекцию. Основной из них — класс java.beans.Introspector, который используется визуальной средой для анализа загружаемых Bean-компонентов и генерации информации о признаках (features) Bean-компонентов

(свойствах, событиях, методах).

2.В классе Introspector имеются static-методы, возвращающие объект Beanlnfo для Веап-

компонентов:

public static Beanlnfo getBeanInfo(Class beanclass) throws IntrospectionException

Класс Introspector создает новый объект типа Beanlnfo, если не находит класс Beanlnfo,

ассоциированный с Bean. В случае, если класс Beanlnfo имеется, метод getBeanlnfo класса Introspector возвращает объект этого класса.

3.Объект Beanlnfo реализует интерфейс java.beans.BeanInfo и содержит get-методы,

возвращающие массивы дескрипторов признаков Bean-компонентов:

PropertyDescriptor[ ]

MethodDescriptor[ ]

EventSetDescriptor[ ]

4.Дескрипторы являются объектами соответствующих классов пакета java.beans. Эти классы являются потомками класса java.beans.FeatureDescriptor.

Вклассах дескрипторов определены разнообразные методы, позволяющие извлекать из объектов-дескрипторов информацию о признаках Bean (свойствах, событиях, методах), что и делает визуальная среда проектирования.

5.По умолчанию, в случае отсутствия класса Beanlnfo для Bean-компонента, класс Introspector использует отражение низкого уровня (Reflection API) для определения признаков Bean.

Дескрипторы, содержащиеся в объекте Beanlnfo, формируемом классом Introspector, создаются посредством так называемого отражения на стандартные соглашения об именах. При этом сигнатуры

47

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]