Рефлексия в java
TRANSCRIPT
![Page 2: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/2.jpg)
Рефлексия
Рефлексия (от поздне лат. reflexio - обращение назад) - это механизм
исследования данных о программе во время её выполнения.
Рефлексия позволяет исследовать информацию о полях, методах и
конструкторах классов.
![Page 3: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/3.jpg)
Рефлексия
Можно также выполнять операции над полями и методами которые
исследуются. Рефлексия в Java осуществляется с помощью Java Reflection API. Этот интерфейс API состоит из классов пакетов java.lang и java.lang.reflect.
![Page 4: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/4.jpg)
Рефлексия может
Определить класс объекта. Получить информацию о: модификаторах класса, полях, методах, конструкторах, суперклассе, аннотациях
Выяснить, какие константы и методы принадлежат интерфейсу.
![Page 5: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/5.jpg)
Рефлексия может
Создать экземпляр класса, имя которого неизвестно до момента выполнения программы.
Получить и установить значение свойства объекта.
Вызвать метод объекта.Создать новый массив, размер и тип компонентов которого неизвестны до момента выполнения программ.
![Page 6: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/6.jpg)
Получение объекта типа Class
Object a = new MyClass(); Class aclass = a.getClass();
Class aclass = MyClass.class; Class iclass = Integer.class;
![Page 7: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/7.jpg)
Получение имени класса
Class c = myObject.getClass(); String s = c.getName();Объект типа String, возвращаемый методом getName(), будет содержать полностью уточнённое имя класса, т.е. если типом объекта myObject будет Integer, то результат будет вида java.lang.Integer .
![Page 8: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/8.jpg)
Нахождение суперклассов
Class c = myObj.getClass(); Class superclass = c.getSuperclass();
![Page 9: Рефлексия в java](https://reader036.vdocuments.site/reader036/viewer/2022082905/58e49d371a28abf5428b569d/html5/thumbnails/9.jpg)
Определение интерфейсов, реализуемых классом
Class c = LinkedList.class; Class[] interfaces = c.getInterfaces(); for(Class cInterface : interfaces) {
System.out.println( cInterface.getName() ); }