Java-отражение
Отражение Java
В этом руководстве мы изучим рефлексию — функцию программирования на Java, которая позволяет нам проверять и изменять классы, методы и т. д.
В Java отражение позволяет нам проверять и манипулировать классами, интерфейсами, конструкторами, методами и полями во время выполнения.
В Java есть класс с именем 07
который хранит всю информацию об объектах и классах во время выполнения. Объект класса можно использовать для отражения.
Отражение классов Java
Чтобы отразить класс Java, нам сначала нужно создать объект Class .
И, используя объект, мы можем вызывать различные методы для получения информации о методах, полях и конструкторах, присутствующих в классе.
Существует три способа создания объектов класса:
<сильный>1. Использование метода forName()
01
Здесь 12
метод принимает имя класса, который будет отражен в качестве аргумента.
<сильный>2. Использование метода getClass()
10пре>Здесь мы используем объект Dog class для создания объекта Class .
<сильный>3. Использование расширения .class
28Теперь, когда мы знаем, как создавать объекты
<час>29
. Мы можем использовать этот объект для получения информации о соответствующем классе во время выполнения.Пример:отражение класса Java
32Вывод
40В приведенном выше примере мы создали суперкласс:Animal. и подкласс:Собака . Здесь мы пытаемся проверить класс Dog. .
Обратите внимание на заявление,
58Здесь мы создаем объект obj из класса используя
39
метод. Используя объект, мы вызываем разные методы класса Class. .
- obj.getName() - возвращает имя класса
- obj.getModifiers() - возвращает модификатор доступа класса
- obj.getSuperclass() - возвращает суперкласс класса
Чтобы узнать больше о 48
, посетите класс Java (официальная документация по Java).
Примечание :мы используем 51
class для преобразования целочисленного модификатора доступа в строку.
Отражение полей, методов и конструкторов
Пакет 61
предоставляет классы, которые можно использовать для управления членами класса. Например,
- Класс метода - предоставляет информацию о методах в классе
- Полевой класс - предоставляет информацию о полях в классе
- Класс-конструктор - предоставляет информацию о конструкторах в классе
1. Отражение методов Java
75
Класс предоставляет различные методы, которые можно использовать для получения информации о методах, присутствующих в классе. Например,
61
Вывод
73
В приведенном выше примере мы пытаемся получить информацию о методах, присутствующих в Dog. учебный класс. Как упоминалось ранее, мы сначала создали объект obj из 89
используя 94
метод.
Обратите внимание на выражение,
89
Здесь 105
возвращает все методы, присутствующие внутри класса.
Также мы создали объект m из 114
учебный класс. Здесь
- m.getName() - возвращает имя метода
- m.getModifiers() - возвращает модификатор доступа методов в целочисленной форме
- m.getReturnType() - возвращает возвращаемый тип методов
127
class также предоставляет различные другие методы, которые можно использовать для проверки методов во время выполнения. Чтобы узнать больше, посетите класс методов Java (официальная документация по Java).
2. Отражение полей Java
Подобно методам, мы также можем проверять и изменять различные поля класса, используя методы класса 137
. учебный класс. Например,
99
Вывод
107
В приведенном выше примере мы создали класс с именем Dog. . Он включает общедоступное поле с именем type. . Обратите внимание на заявление,
114
Здесь мы получаем доступ к открытому полю Dog. class и присвоение его объекту field1 Поля класс.
Затем мы использовали различные методы 140
класс:
- field1.set() - устанавливает значение поля
- field1.get() - возвращает значение поля
- field1.getModifiers() - возвращает значение поля в целочисленной форме
Точно так же мы также можем получать доступ и изменять частные поля. Однако отражение частного поля немного отличается от общедоступного. Например,
129
Вывод
134
В приведенном выше примере мы создали класс с именем Dog. . Класс содержит закрытое поле с именем color. . Обратите внимание на заявление.
146
Здесь мы получаем доступ к color и присвоение его объекту field1 из 154
учебный класс. Затем мы использовали field1 изменить доступность color и позволяет нам вносить в него изменения.
Затем мы использовали field1 для выполнения различных операций с цветом частного поля.
Чтобы узнать больше о различных методах Field , посетите Java Field Class (официальная документация по Java).
<час>3. Отражение конструктора Java
Мы также можем проверять различные конструкторы класса, используя различные методы, предоставляемые 164
. учебный класс. Например,
159
Вывод
165
В приведенном выше примере мы создали класс с именем Dog. . Класс включает два конструктора.
Мы используем отражение, чтобы найти информацию о конструкторах класса. Обратите внимание на заявление,
179
Здесь мы обращаемся ко всем конструкторам, присутствующим в Dog. и присвоение их массиву конструкторов из 176
тип.
Затем мы использовали объект c чтобы получить различную информацию о конструкторе.
- c.getName() - возвращает имя конструктора
- c.getModifiers() - возвращает модификаторы доступа конструктора в целочисленной форме
- c.getParameterCount() - возвращает количество параметров, присутствующих в каждом конструкторе
Чтобы узнать о других методах 188
класс, посетите класс конструктора
java