Я прочитал пару вопросов, связанных с общей проблемой выгрузки / перезагрузки класса во время выполнения, и, похоже, это сложная и несколько сложная проблема. Интересно, однако, как обстоят дела с классами, которые явно инструментированы во время выполнения, используя отдельный ClassLoader, предназначенный для этой цели, и не имеют никакого экземпляра (потому что либо конструктор всегда выдает исключение, либо класс даже не прошел проверку JVM)?
Я пытаюсь глубоко смоделировать произвольные графы классов модели предметной области (код библиотеки). Это scala, что означает, что это классы без конструкторов по умолчанию и которые вообще не принимают значения null
в целом, поэтому мне нужно создать экземпляр всех аргументов (и, в свою очередь, часто рекурсивно обрабатывать их подклассы). Это, очевидно, иногда может потерпеть неудачу - как часто зависит от стиля кодирования и сколько проверки выполняется в конструкторе. Поскольку я уже сталкиваюсь с риском насмешки над гораздо большим графиком из-за зависимостей, которые были бы желательны, я стараюсь ограничиться одним лучшим выстрелом при создании класса и разочароваться в неудаче, а не пробовать разные конструкторы или другие значения, что, по крайней мере, теоретически может увеличить мой успех.
В настоящее время я использую ByteBuddy и, учитывая, насколько он всеобъемлющий, кажется, что-то уже можно сделать?