Страницы

Поиск по вопросам

четверг, 18 апреля 2019 г.

Динамическое создание конструктора

В Java программе необходимо создать объект, но заранее не известно сколько и какие поля будут участвовать в конструкторе. Есть ли возможность во время выполнения добавлять к классу конструктор с необходимым набором параметров?


Ответ

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

Комментариев нет:

Отправить комментарий