81 подписчик
❓Для чего нужен Reflection API ❓
Рефлексия в Java — это механизм, который позволяет разработчику вносить изменения и получать информацию о классах, интерфейсах, полях и методах во время выполнения, не зная их имен при этом.
Reflection API также помогает создавать новые экземпляры классов, вызывать методы и получать или устанавливать значения полей.
Давай соберем все возможности использования рефлексии в один список:
🟣Узнать/определить класс объекта
🟣Получить информацию о модификаторах класса, полях, методах, константах, конструкторах и суперклассах
🟣Выяснить, какие методы принадлежат реализуемому интерфейсу / интерфейсам
🟣Создать экземпляр класса, когда имя класса неизвестно до момента выполнения программы
🟣Получить и установить значение поля объекта по имени
🟣Вызвать метод объекта по имени
Рефлексия используется практически во всех современных технологиях Java и лежит в основе большинства современных Java/Java EE фреймворков и библиотек, например, в:
🟣Spring — фреймворков для создания веб-приложений
🟣 JUnit — фреймворк для тестирования
Если разрабтчик никогда не сталкивался с такого рода механизмами, то у него скорее всего возникнет закономерный вопрос — а зачем все это надо? Ответ в этом случае достаточно простой, но в то же время очень неопределенный: благодаря рефлексии мы кардинально повышаем гибкость и возможность настраивать приложение под себя и под свой код.
Ну а теперь немного о минусах:
🟣Нарушения безопасности приложения. С помощью рефлексии мы можем получить доступ к части кода, к которой не должны были (нарушение инкапсуляции).
🟣Ограничения системы безопасности. Рефлексия требует разрешения времени выполнения, недоступные для систем под управлением менеджера безопасности.
🟣Низкая производительность. Рефлексия в Java определяет типы динамически, сканируя classpath, чтобы найти класс для загрузки. Это снижает производительность.
🟣Сложность. Код, написанный с помощью рефлексии, трудно читать и отлаживать.
Подробнее про Reflection можно прочитать здесь
1 минута
6 марта 2024