Тема  4. Reflection

Содержание

  1. Введение в Reflection
    1. Идентификаторы типов (type tokens)
    2. Информация о типе
  2. Структура класса
    1. Поля
      1. Получение информации
      2. Чтение и запись значений
    2. Методы и конструкторы
      1. Получение информации
      2. Вызов методов
      3. Создание объектов
    3. Вложенные классы
  3. Массивы
  4. Загрузка классов
    1. Загрузчики классов
    2. Иерархия загрузчиков
    3. Доступ к ресурсам
  5. Параметры типов
    1. Интерфейс Type и его потомки
    2. Generic-массивы
  6. Посредники
    1. Создание посредников
    2. Обработчики вызовов
    3. Применение посредников

Слайды

HTML

Примеры

zip

Домашнее задание 4. Implementor

  1. Реализуйте класс Implementor, генерирующий реализации классов и интерфейсов.
    • Аргумент командной строки: полное имя класса/интерфейса, для которого требуется сгенерировать реализацию.
    • В результате работы должен быть сгенерирован java-код класса с суффиксом Impl, расширяющий (реализующий) указанный класс (интерфейс).
    • Сгенерированный класс должен компилироваться без ошибок.
    • Сгенерированный класс не должен быть абстрактным.
    • Методы сгенерированного класса должны игнорировать свои аргументы и возвращать значения по умолчанию.
  2. В задании выделяются три варианта:
    • ПростойImplementor должен уметь реализовывать только интерфейсы (но не классы). Поддержка generics не требуется.
    • СложныйImplementor должен уметь реализовывать и классы, и интерфейсы. Поддержка generics не требуется.
    • БонусныйImplementor должен уметь реализовывать generic-классы и интерфейсы. Сгенерированный код должен иметь корректные параметры типов и не порождать UncheckedWarning.

Библиография

  1. Forman I.R., Forman N. Java Reflection in Action
  2.  Reflection (guide)
  3.  The Reflection API (tutorial)