Spec-Zone .ru
спецификации, руководства, описания, API

След: API Reflection

Использование Отражения

Отражение обычно используется программами, которые требуют возможности исследовать или изменить поведение времени выполнения приложений, работающих в виртуальной машине Java. Это - относительно расширенная функция и должно использоваться только разработчиками, у которых есть схватывание strong основных принципов языка. С тем протестом в памяти, отражение является мощным методом и может позволить приложениям выполнить операции, которые иначе были бы невозможны.

Функции расширяемости
Приложение может использовать внешние, определяемые пользователем классы, создавая экземпляры объектов расширяемости, используя их полностью определенные имена.
Средства просмотра классов и Визуальные Среды разработки
Браузер class должен быть в состоянии перечислить элементы классов. Визуальные среды разработки могут извлечь выгоду из использования информации о типе, доступной в отражении, чтобы помочь разработчику в записи корректного кода.
Отладчики и Инструменты тестирования
Отладчики должны быть в состоянии исследовать членов парламента, не занимающих официального поста на классах. Тестовые ремни безопасности могут использовать отражение, чтобы систематически вызвать поддающийся обнаружению набор API, определенные на class, обеспечить высокий уровень покрытия кода в тестовом комплекте.

Недостатки Отражения

Отражение мощно, но не должно использоваться без разбора. Если возможно выполнить работу, не используя отражение, то предпочтительно избегать использования этого. Следующие проблемы должны быть учтены, получая доступ к коду через отражение.

Издержки производительности
Поскольку отражение включает типы, которые динамически разрешаются, определенная оптимизация виртуальной машины Java не может быть выполнена. Следовательно, отражающие операции имеют более медленную производительность чем свои неотражающие дубликаты, и должны избежаться в разделах кода, которые часто вызывают в чувствительных к производительности приложениях.
Ограничения безопасности
Отражение требует разрешения времени выполнения, которое, возможно, не присутствует, работая под менеджером безопасности. Это находится в важном рассмотрении для кода, который должен работать в ограниченном контексте защиты, такой как в Апплете.
Воздействие Внутренностей
Так как отражение позволяет коду выполнять операции, которые были бы недопустимы в неотражающем коде, таковы как доступ private поля и методы, использование отражения может привести к неожиданным побочным эффектам, которые могут представить дисфункциональный код и могут уничтожить мобильность. Отражающие абстракции повреждений кода и поэтому могут изменить поведение с обновлениями платформы.

Уроки следа

Этот след покрывает общее использование отражения для доступа и управления классами, полями, методами, и конструкторами. Каждый урок содержит примеры кода, подсказки, и информацию о поиске и устранении неисправностей.

значок следа Классы
Этот урок показывает различные способы получить a Class объект и использование это, чтобы исследовать свойства class, включая его объявление и содержание.
значок следа Элементы
Этот урок описывает, как использовать API Reflection, чтобы найти поля, методы, и конструкторов class. Примеры обеспечиваются для установки и получения значений полей, вызова методов, и создания новых экземпляров объектов, используя определенных конструкторов.
значок следа Массивы и Перечислимые типы
Этот урок представляет два специальных типа классов: массивы, которые сгенерированы во времени выполнения, и enum типы, которые определяют уникальные именованные объектные экземпляры. Пример кода показывает, как получить компонентный тип для массива и как установить и получить поля с массивом или enum типы.

Отметьте: 

Примеры в этом следе разрабатываются для того, чтобы экспериментировать с API Reflection. Обработка исключений поэтому не является тем же самым, как использовался бы в производственном коде. В частности в производственном коде не рекомендуется вывести трассировки стека, которые видимы пользователю.



Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь
.

Предыдущая страница: Начало Учебного руководства
Следующая страница: Классы