Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Учебное пособие по Java Reflection API с примером


Что такое отражение в Java?

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

Одним из преимуществ API отражения в Java является то, что он также может манипулировать частными членами класса.

Пакет java.lang.reflect предоставляет множество классов для реализации отражения java.Методы класса java.lang.Class используются для сбора полных метаданных определенного класса.

В этом уроке вы узнаете-

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

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

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

Как получить полную информацию о классе

Чтобы получить информацию о переменных, методах и конструкторах класса, нам нужно создать объект класса.

04
  • В следующем примере показаны различные способы создания объекта класса «класс»:
  • Пример 1. Как получить метаданные класса

    В следующем примере показано, как получить такие метаданные, как:имя класса, имя суперкласса, реализованные интерфейсы и модификаторы доступа класса.

    Мы получим метаданные нижеприведенного класса с именем Guru99Base.class:

    13
    1. Имя класса:Guru99Base
    2. Его модификаторы доступа:public и abstract
    3. В нем реализованы интерфейсы:Serializable и Cloneable
    4. Поскольку он не имеет явного расширения какого-либо класса, его суперклассом является:java.lang.Object

    Нижеприведенный класс получит метаданные Guru99Base.class и распечатает их:

    21
    1. напечатать имя класса с помощью метода getName
    2. Выведите имя суперкласса, используя метод getSuperClass().getName()
    3. Вывести название реализованных интерфейсов
    4. Вывести модификаторы доступа, используемые классом

    Пример 2. Как получить метаданные переменной

    В следующих примерах показано, как получить метаданные переменной:

    Здесь мы создаем класс с именем Guru99VariableMetaData .class с некоторыми переменными:

    35
    Действия для получения метаданных о переменных в указанном выше классе:
    1. Создайте объект класса указанного выше класса, например Guru99VariableMetaData.class, как показано ниже:
      43
    2. Получите метаданные в виде массива полей с помощью getFields(). или getDeclaredFields() методы, как показано ниже:
      51

    получить поля() метод возвращает метаданные общедоступной переменной из указанного класса, а также из его суперкласса.

    получитьобъявленные поля() метод возвращает метаданные всех переменных только из указанного класса.

    <старт ="3">
  • Получите имена переменных с помощью метода «public String getName()».
  • Получить тип данных переменных с помощью метода «общедоступного класса getType()».
  • Получите значение переменной с помощью метода «public xxx get (Field)».

    Здесь xxx может быть байтом или меньше значения любого типа, которое мы хотим получить.

  • Получение модификаторов доступа к переменным с помощью методов getModifier() и Modifier.toString(int i).

    Здесь мы пишем класс для получения метаданных переменных, присутствующих в классе Guru99VariableMetaData .class:

    64
    1. Создан объект класса для Guru99VariableMetaData.class
    2. Получить все метаданные переменных в массиве полей
    3. Выведены все имена переменных в классе Guru99VariableMetaData.class
    4. Выведены все типы данных переменных в классе Guru99VariableMetaData.class
    5. Выведены все модификаторы доступа переменных в классе Guru99VariableMetaData.class
    6. Выведены значения всех переменных в Выведены все типы данных переменных в классе Guru99VariableMetaData.class

    Пример 3. Как получить метаданные метода

    В следующих примерах показано, как получить метаданные метода:

    Здесь мы создаем класс с именем Guru99MethodMetaData .class с некоторыми методами

    76

    Действия для получения метаданных о методах в указанном выше классе:

    1. Создайте объект класса указанного выше класса, например Guru99MethodMetaData.class, как показано ниже:
      82
    2. Получить информацию о методе в массиве Method с помощью методов getMethods() и getDeclaredMethods(), как показано ниже:
      92

      получить методы() метод возвращает метаданные общедоступных методов из указанного класса, а также из его суперкласса.

      getDeclaredMethods() метод возвращает метаданные всех методов только из указанного класса.

    3. Получите имя метода, используя getName() метод.
    4. Получить тип возвращаемого значения метода с помощью getReturnType() метод.
    5. Получение модификаторов доступа к методам с помощью getModifiers() и Modifiers.toString(int i) методы.
    6. Получить типы параметров метода с помощью getParameterTypes() метод, который возвращает массив классов.
    7. Получить исключение с помощью getExceptionTypes() метод, который возвращает массив классов.

    Здесь мы пишем класс для получения метаданных методов, присутствующих в классе Guru99MethodMetaData.class:

    100 
    1. Создан объект класса для Guru99MethodMetaData.class
    2. Получить все метаданные всех методов в массиве методов
    3. Выведены все имена методов, присутствующие в классе Guru99MethodMetaData.class
    4. Вывод типов возвращаемых значений методов класса Guru99MethodMetaData.class
    5. Выведены все модификаторы доступа методов класса Guru99MethodMetaData.class
    6. Типы печатных параметров методов в Guru99MethodMetaData.class
    7. Печатные исключения создаются методами в Guru99MethodMetaData.class

    Пример 4. Как получить метаданные конструкторов

    В следующих примерах показано, как получить метаданные конструкторов:

    Здесь мы создаем класс с именем Guru99Constructor.class с разными конструкторами:

    117

    Здесь мы пишем класс для получения метаданных конструкторов, присутствующих в классе Guru99Constructor.class:

    123
    1. Создан объект класса для Guru99Constructor.class
    2. Получить все метаданные всех конструкторов в массиве Constructor
    3. Выведены имена всех конструкторов, присутствующих в классе Guru99Constructor.class
    4. Выведены все модификаторы доступа конструкторов в классе Guru99Constructor.class
    5. Печатные типы параметров конструкторов в Guru99Constructor.class
    6. Печатные исключения генерируются конструкторами в Guru99Constructor.class

    Обзор:

    • Программирование рефлексии в Java помогает извлекать и изменять информацию о классах и членах классов, таких как переменные, методы, конструкторы.
    • Reflection API в Java можно реализовать с помощью классов в пакете java.lang.reflect и методов класса java.lang.Class.
    • Некоторые часто используемые методы класса java.lang.Class:getName(), getSuperclass(), getInterfaces(), getModifiers() и т. д.
    • В пакете java.lang.reflect часто используются классы Field, Method, Constructor, Modifier и т. д.
    • Reflection API может получать доступ к закрытым методам и переменным класса, что может представлять угрозу безопасности.
    • Reflection API — это мощная функция, предоставляемая Java, но она сопряжена с некоторыми накладными расходами, такими как снижение производительности, уязвимость системы безопасности и проблемы с разрешениями. Следовательно, API отражения следует рассматривать как последнее средство для выполнения операции.

    java

    1. Анонимный класс Java
    2. Java-отражение
    3. Класс Java ObjectInputStream
    4. Класс Java ObjectOutputStream
    5. Класс C++ и объект с примером
    6. Учебное пособие по абстрактному классу C # с примером:что такое абстракция?
    7. Метод Java String charAt() с примером
    8. Метод Java String endWith() с примером
    9. Java BufferedReader:как читать файл в Java с примером
    10. Алгоритм сортировки вставками в Java с примером программы