В Java программе необходимо создать объект, но заранее не известно сколько и какие поля будут участвовать в конструкторе. Есть ли возможность во время выполнения добавлять к классу конструктор с необходимым набором параметров?
Ответ
Есть такой способ хакинга (заранее предупреждаю, что это антипаттерн):
Задаемся некой структурой данных описывающих поведение гипотетического конструктора (в реалии конечно же класс с заданным конструктором) - нечто типа псевдоязыка - вполне сойдет какой-нибудь xml/json
Парсим псевдоязык и генерируем на лету исходник класса
Через ToolProvider вызываем в рантайме компилятор Javа
Далее через ClassLoader загружаем объектник класса
Далее уже все как обычно: у нас есть ссылка на класс, вызываем через рефлексию его конструктор.
Еще раз - так не рекомендуется делать, но иногда так делается. Сам лично когда то делал такую поделушку.
Комментариев нет:
Отправить комментарий