Java Reflection API: все, что вам нужно знать



Эта статья познакомит вас с Java Reflection API, а также поможет понять, как Reflection работает в Java и что это такое, с демонстрацией.

Отражение это процесс изучения или изменения поведения класса во время выполнения . API отражения Java используется для управления классом и его членами, которые включают поля, методы, конструктор и т. д. во время выполнения. В этой статье мы подробно разберемся в Java Reflection API.

магистр, аспирантура

В этой статье основное внимание будет уделено следующим указателям:





Итак, давайте начнем с этих указателей в этой статье о Java Reflection API.

Где используется Java Reflection API?

Reflection API в основном используется в:



  • IDE (интегрированная среда разработки), например Eclipse, MyEclipse, NetBeans и т. Д.
  • Отладчик
  • Инструменты тестирования и т. Д.

Так что же такое класс в Java lang.

Класс в пакете java.lang.reflect?

Ниже приведен список различных классов Java в java.lang.package для реализации отражения.

  • Поле : Этот класс используется для сбора декларативной информации, такой как тип данных, модификатор доступа, имя и значение переменной.
  • Метод : Этот класс используется для сбора декларативной информации, такой как модификатор доступа, тип возвращаемого значения, имя, типы параметров и тип исключения метода.
  • Строитель : Этот класс используется для сбора декларативной информации, такой как модификатор доступа, имя и типы параметров конструктора.
  • редактировать : Этот класс используется для сбора информации о конкретном модификаторе доступа.

Нет, давайте взглянем на методы Java Reflection API,



Методы, используемые в java.lang.Class

Метод

Описание

общедоступная строка getName ()

возвращает имя класса

публичный статический класс forName (String className) выбрасывает ClassNotFoundException

загружает класс и возвращает ссылку на класс Class.

public Object newInstance () выбрасывает InstantiationException, IllegalAccessException

создает новый экземпляр.

публичное логическое значение isInterface ()

проверяет, является ли это интерфейсом.

публичное логическое значение isArray ()

проверяет, является ли это массивом.

публичное логическое значение isPrimitive ()

проверяет, примитивен ли он.

публичный класс getSuperclass ()

возвращает ссылку на класс суперкласса.

public Field [] getDeclaredFields () выбрасывает SecurityException

как использовать пространство имен в c ++

возвращает общее количество полей этого класса.

общедоступный метод [] getDeclaredMethods () выбрасывает SecurityException

возвращает общее количество методов этого класса.

public Constructor [] getDeclaredConstructors () выбрасывает SecurityException

возвращает общее количество конструкторов этого класса.

общедоступный метод getDeclaredMethod (String name, Class [] parameterTypes) выбрасывает NoSuchMethodException, SecurityException

возвращает экземпляр класса метода.

Продвинемся со статьей,

Как получить объект класса Class?

Есть 3 способа получить экземпляр класса Class. Вот они:

  • forName () метод класса Class
  • getClass () класса Object
  • синтаксис .class

forName () метод класса Class

  • используется для динамической загрузки класса.
  • возвращает экземпляр класса Class.
  • Его следует использовать, если вы знаете полное имя класса. Его нельзя использовать для примитивных типов.

Давайте посмотрим на простой пример метода forName ().

class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Вывод:

просто

Отражение Java: метод API getClass () класса Object

Он возвращает экземпляр класса Class. Его следует использовать, если вы знаете тип. Более того, его можно использовать с примитивами.

class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Simple () Test t = new Test () t.printName (s)}}

Вывод:

просто

Синтаксис .class

Если тип доступен, но нет экземпляра, то можно получить класс, добавив «.class» к имени типа. Его также можно использовать для примитивного типа данных.

class Test {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}

Вывод:

логический

Тестовое задание

А теперь давайте продолжим эту статью об API отражения Java.

Преимущества и недостатки использования Java Reflection API

Преимущества использования Java Reflection API

  • Возможности расширяемости: Приложение может использовать внешние, определяемые пользователем классы, создавая экземпляры объектов расширяемости, используя их полностью определенные имена.
  • Инструменты отладки и тестирования : Отладчики используют свойство отражения для проверки частных членов в классах.

Недостатки использования Java Reflection API

  • Накладные расходы на производительность: Отражающие операции имеют более низкую производительность, чем их неотражающие аналоги, и их следует избегать в разделах кода, которые часто вызываются в приложениях, чувствительных к производительности.
  • Открытие внутренних органов: Отражающий код нарушает абстракции и, следовательно, может изменить поведение при обновлении платформы.

На этом мы подошли к концу статьи о Java Reflection API. Если вы хотите узнать больше,проверить от Edureka, надежной компании онлайн-обучения. Курс обучения и сертификации по Java J2EE и SOA от Edureka разработан, чтобы научить вас базовым и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в комментариях к этой статье, и мы свяжемся с вами в ближайшее время.