Определение:
Отражение в время выполнения, для любого класса , в состоянии знать все свойства и методу этого класса, для любого объекта , может вызвать любого из его методов. В Java , просто назвать данный класс, то вы можете получить всю необходимую информацию в класс с помощью отражения.
Особенности:
Класс Анализа во время выполнения для любого одного объекта принадлежит; создавать объекты во время выполнения, оно определяется во время выполнения через переменные и методу любого класса, имеющий; произвольный вызов метода объекта во время выполнения; генерация динамических прокси-серверов.
Где?
JDBC в строке кода: Class.forName ( «com.mysql.jdbc.Driver.class»); загрузка класса драйвера MySQL.
Там Hibernate, Struts достигается за счет отражения.
Реализация:
В Java отражения для реализации наиболее важным шагом является первым шагом является получение объекта класса можно назвать объект класса, полученный с помощью объекта метода, соответствующего получить свойство класса, методы и методу этого класса вызовов.
Там может быть получено в классе 4 () Метод:
1) Class.forName ( "класс путь");
2) имя класса .class
3) имя объекта .getClass ()
4) Если основной типа упаковки, объект класса может быть получен путем вызова упаковочной обертки типа класса свойства.
Например: <?> Класс clazz = Integer.TYPE
Java класс реализации отражены:
1) Класс: Он представляет классы и интерфейсы Java-приложения, работающие в
2) Рубрики: предоставление информации о свойствах класса или интерфейса и динамического доступа к нему.
3) Конструкция: предоставляет информацию о правах доступа одного конструктора класса
4) Метод: предоставить информацию о классе или интерфейсе методы
Примечание: класс Класс Java находит свое отражение в самом важной функции класса, все объекты приобрели информацию (в то числе: методов, свойства, конструкторов, прав доступа) необходимы для ее достижения.
Отражение преимуществ и недостатков:
Преимущества:
1) может динамически получить экземпляр класса во время выполнения, значительно повысить гибкость программы.
2) и Java динамический компилятор комбинация может достигать очень мощной.
Недостатки:
1) с использованием отражения более низкую производительность. Java отражения для разбора байт - код, объекты анализа в памяти.
Решение:
- Поскольку JDK проверка безопасности отнимает много времени, поэтому, setAccessible (истина) , чтобы отключить проверку безопасности способа ( отменить доступ для проверки контроля модификаторов ) для повышения скорости отражения.
- Много раз, сколько необходимо, чтобы динамически создать экземпляр класса, когда есть кэш письма, чем не писать не кэша гораздо быстрее;
- ReflectASM инструментов , с помощью способа генерации байт коды для ускорения скорости отражателя.
2) с использованием отражения относительно небезопасно, нарушает инкапсуляцию классов, методы и свойства могут быть приобретены частным этим класс отражения.