Проект представляет собой утилиту для автоматической генерации:
- Java-классов, реализующих указанные интерфейсы
- JAR-файлов с откомпилированными реализациями
Основное применение:
- Тестирование интерфейсов
- Создание заглушек (mock-объектов)
- Учебные цели (изучение рефлексии в Java)
- Язык программирования: Java 11+
- Инструменты:
- Java Reflection API
- Java Compiler API (для Jar-реализации)
- Javadoc (для документации)
- Система сборки: командная строка (javac/java)
- Работа только с интерфейсами (не поддерживаются классы)
- Запрещается использование сторонних библиотек
- Все файлы создаются только в текущей директории
Входные данные:
- Полное имя интерфейса (например,
java.util.List)
Требования к реализации:
- Генерация Java-класса с суффиксом
Impl - Реализация всех методов интерфейса:
- Возврат значений по умолчанию:
0для примитивных типовfalseдля booleannullдля ссылочных типов
- Возврат значений по умолчанию:
- Корректная обработка:
- Generic-параметров
- Исключений в сигнатурах методов
- Наследования интерфейсов
Пример вывода:
package generated;
import java.util.List;
public class ListImpl<E> implements List<E> {
@Override
public int size() { return 0; }
@Override
public boolean isEmpty() { return false; }
@Override
public E get(int index) { return null; }
// ... остальные методы
}Формат команды:
java Implementor -jar <interface-name> <output.jar>Требования:
- Создание корректного JAR-файла, содержащего:
- Сгенерированный класс
- Манифест с информацией о версии
- Поддержка пакетов (сохранение структуры пакетов)
- Обработка ошибок:
- Некорректные имена интерфейсов
- Ошибки компиляции
Требования:
- Полное документирование:
- Всех классов
- Всех методов (включая private)
- Всех полей
- Генерация документации без предупреждений
- Поддержка тегов:
@author@version@see@throws
- Время генерации класса: < 1 сек для интерфейса с 50 методами
- Максимальный размер обрабатываемого интерфейса: 100 методов
- Обработка всех стандартных интерфейсов JDK
- Защита от бесконечной рекурсии при обработке циклических зависимостей
- Запрет на создание файлов вне текущей директории
- Проверка прав доступа при создании файлов