Я читал о Java Reflections, но до сих пор это было смутное понятие для меня. Может ли кто-нибудь дать краткие сведения с кратким примером того, как использовать отражения в Java?Необходимо, чтобы мои руки были загрязнены отражением
Спасибо.
Я читал о Java Reflections, но до сих пор это было смутное понятие для меня. Может ли кто-нибудь дать краткие сведения с кратким примером того, как использовать отражения в Java?Необходимо, чтобы мои руки были загрязнены отражением
Спасибо.
Я прочитал о Java Reflections но до настоящего времени это было расплывчатое понятие мне.
Вот быстрый в рефлексии в Java:
Структурная самоанализ. Основное отражение касается интроспекции объекта во время выполнения. Это означает, что вы можете изучать структуру объектов и классов во время выполнения программно, например. получить класс объекта, перечислить методы класса, перечислить поля, определенные в классе, и т. д.
Отражающий вызов и его реализация. С отражением вы можете вызывать метод во время выполнения, который не определен во время компиляции, например. invoke метод с именем M на объекте O, где M считывается в файле конфигурации. Вы также можете создавать объекты динамически, не зная класса во время компиляции.
Аннотации. Затем вы можете переместиться на один уровень вверх в мета-уровни и играть с аннотациями. Annotations describe other elements, такие как класс, метод и поля. Многие основы полагаются на это.
Динамический прокси. Dynamic proxy может быть сгенерирован во время выполнения. В этом случае это действительно так, если вы динамически создаете класс во время выполнения. Использовать с осторожностью, но в некоторых случаях очень удобно и мощно.
Я думаю, вы начнете со структурной самоанализа. В других ответах есть ссылки на учебные пособия, но я надеюсь, что это даст вам обзор того, что еще можно сделать.
Это прежде всего используется для доступа к классам/методам/полям программно (т. Е. Во время выполнения вместо компиляции). Хороший API реального мира, который интенсивно использует отражение, - это ORM, как Hibernate/JPA.
Здесь вы можете найти Sun tutorial on the subject (нажмите Вперед ссылку внизу, чтобы развернуть его).
Я думаю, the article 'Using Java Reflection' found on sun.com может быть хорошей отправной точкой.
Нечто, о котором стоит упомянуть, равно Javassist. Он не только обладает отражающими способностями, но также позволяет управлять байт-кодами во время выполнения с использованием обычного синтаксиса источника! Как только вы углубились в размышления немного (что вы, вероятно, уже сейчас), вы по-настоящему оцените его красоту.
http://java.sun.com/docs/books/tutorial/reflect/index.html? –
+1 для ссылки. Учебное пособие очень само собой разумеется. – Cambium
@Bragaadeesh: вот один из примеров вопроса, который я задал, где решение состоит в использовании крошечного фрагмента отражения, чтобы определить, существует ли метод или нет: http://stackoverflow.com/questions/2448614/java-easiest- путь к пакету-как-ява-1-5-и-1-6-код – SyntaxT3rr0r