| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Интроспекция и рефлексия |
| Автор: serious 16.11.2006, 15:41 |
| Объясните пожалуйста на пальцах, что это такое. Точнее, я немного представляю, что такое интроспекция, но для чего она используется, мне не совсем понятно. |
| Автор: LSD 16.11.2006, 15:58 |
| Да много для чего. Например она используется IDE для того чтобы работать с любыми JavaBeads компонентами. С ее помощью можно работать с классами, о которых ничего не было известно на момент компиляции. Например мы можем в файл настроек записать имя класса и имена propertys которые надо установить, а затем в рантайме это сделать и получить уже сконфигурированный объект. |
| Автор: batigoal 17.11.2006, 11:45 |
| 1) Можно использовать рефлексию для разработки плагинов. Т.е. подкинул программе jar - и она разобралась, что в нем есть. Хотя, конечно, лучше это делать с помощью интерфейсов\конфигурационных файлов. 2) Хороший пример использования рефлексии - JDBC. Реальный драйвер базы подхватывается уже в рантайме. |
| Автор: serious 17.11.2006, 13:22 |
| А чем они отличаются, никак не могу понять... Рефлексия - это, как я понял, динамическое определение свойств и методов класса? |
| Автор: batigoal 17.11.2006, 13:29 |
| Как я понимаю, это очень близкие понятия. Интроспекция базируется на рефлексии. Reflection - это механизм, API, с помощью которого можно получить информацию о классах и интерфейсах. В рамках JavaBeans то же самое называется интроспекцией, причем реализована она с помощью того самого java.lang.reflect. |
| Автор: serious 17.11.2006, 15:29 |
| Если это фактически одно и то же, зачем вводить путаницу? Или есть все-таки какое-то неуловимое отличие? |
| Автор: tux 17.11.2006, 15:38 | ||||
По-моему, разница очевидна. Reflection - возможность получить метаданные класса, introspection - получение информации об атрибутах с использование reflection, причем только для javabean. Цитаты отсюда - http://mindprod.com/index.html. |