Презентации и задания для практики NetCracker / Практика / 09. ефлексия
.docПрактическая работа №9
Задание на практическую работу
В процессе написания тестовых заданий ознакомьтесь с возможностями механизма рефлексии.
Задание 1
Напишите простое консольное приложение, использующее рефлексию.
В параметрах командной строки приложения указывается имя класса, имя вызываемого метода класса (метод статический), и числовые параметры для этого метода (тип double).
На экран должен быть выведен результат выполнения этого метода.
Задание 2
В классе Buildings перегрузите статические методы, которые с помощью текущей фабрики создают новые экземпляры объектов зданий, этажей и помещений: кроме необходимых для создания объекта параметров методы должны получать еще и ссылку типа Class на рефлексивное описание класса, объект которого нужно создать. Например, метод создания помещения может иметь такое объявление: public static Space createSpace(double area, Class spaceClass).
Методы должны найти в предложенном классе конструктор с необходимыми типами параметров и создать объект с помощью этого конструктора (а не с помощью фабрики). Если по каким-то причинам создание объекта невозможно (класс не реализует нужный интерфейс, отсутствует конструктор с нужными параметрами и т.д.), методы должны выбрасывать исключение IllegalArgumentException.
Задание 3
В классе Buildings перегрузите методы считывания помещений из потоков так, чтобы кроме потока методы получали три ссылки типа Class на рефлексивные описания классов, объекты которых должны создаваться при считывании информации о здании. Например, метод может иметь такое объявление: public static Building inputBuilding(InputStream in, Class buildingClass, Class floorClass, Class spaceClass).
В теле методов для создания объектов должны использоваться методы из предыдущего задания.
Проверьте работу новых методов, записав информацию о здании в файл и считав ее оттуда с указанием различных классов.