Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Реализация генератора классов-обёрток для интерфейсов (Implementor)

1. Назначение

Проект представляет собой утилиту для автоматической генерации:

  • Java-классов, реализующих указанные интерфейсы
  • JAR-файлов с откомпилированными реализациями

Основное применение:

  • Тестирование интерфейсов
  • Создание заглушек (mock-объектов)
  • Учебные цели (изучение рефлексии в Java)

2. Технические требования

2.1. Стек технологий

  • Язык программирования: Java 11+
  • Инструменты:
    • Java Reflection API
    • Java Compiler API (для Jar-реализации)
    • Javadoc (для документации)
  • Система сборки: командная строка (javac/java)

2.2. Ограничения

  • Работа только с интерфейсами (не поддерживаются классы)
  • Запрещается использование сторонних библиотек
  • Все файлы создаются только в текущей директории

3. Функциональные требования

3.1. Базовый функционал (Implementor)

Входные данные:

  • Полное имя интерфейса (например, java.util.List)

Требования к реализации:

  1. Генерация Java-класса с суффиксом Impl
  2. Реализация всех методов интерфейса:
    • Возврат значений по умолчанию:
      • 0 для примитивных типов
      • false для boolean
      • null для ссылочных типов
  3. Корректная обработка:
    • 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; }
    
    // ... остальные методы
}

3.2. Генерация JAR-файлов (Jar Implementor)

Формат команды:

java Implementor -jar <interface-name> <output.jar>

Требования:

  1. Создание корректного JAR-файла, содержащего:
    • Сгенерированный класс
    • Манифест с информацией о версии
  2. Поддержка пакетов (сохранение структуры пакетов)
  3. Обработка ошибок:
    • Некорректные имена интерфейсов
    • Ошибки компиляции

3.3. Документирование (Javadoc)

Требования:

  1. Полное документирование:
    • Всех классов
    • Всех методов (включая private)
    • Всех полей
  2. Генерация документации без предупреждений
  3. Поддержка тегов:
    • @author
    • @version
    • @see
    • @throws

4. Нефункциональные требования

4.1. Производительность

  • Время генерации класса: < 1 сек для интерфейса с 50 методами
  • Максимальный размер обрабатываемого интерфейса: 100 методов

4.2. Надёжность

  • Обработка всех стандартных интерфейсов JDK
  • Защита от бесконечной рекурсии при обработке циклических зависимостей

4.3. Безопасность

  • Запрет на создание файлов вне текущей директории
  • Проверка прав доступа при создании файлов

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages