[JavaSE] отражение

Предупреждение: Данная статья является блоггером оригинальной статьи, следовать CC 4.0 BY-SA авторского соглашения, воспроизведенный, пожалуйста , приложите ссылку первоисточника и это утверждение.
Эта ссылка: https://blog.csdn.net/Soldier49Zed/article/details/102741356

Определение:

Отражение в время выполнения, для любого класса , в состоянии знать все свойства и методу этого класса, для любого объекта , может вызвать любого из его методов. В 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 отражения для разбора байт - код, объекты анализа в памяти.

Решение:

  1. Поскольку JDK проверка безопасности отнимает много времени, поэтому, setAccessible (истина) , чтобы отключить проверку безопасности способа ( отменить доступ для проверки контроля модификаторов ) для повышения скорости отражения.
  2. Много раз, сколько необходимо, чтобы динамически создать экземпляр класса, когда есть кэш письма, чем не писать не кэша гораздо быстрее;
  3. ReflectASM инструментов , с помощью способа генерации байт коды для ускорения скорости отражателя.

2) с использованием отражения относительно небезопасно, нарушает инкапсуляцию классов, методы и свойства могут быть приобретены частным этим класс отражения.

рекомендация

отblog.csdn.net/Soldier49Zed/article/details/102741356