Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
08.06.2015
Размер:
29.7 Кб
Скачать

Практическая работа №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).

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

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

Соседние файлы в папке Практика