Я пытаюсь исправить ошибку в одной из моих программ, которая, как мне кажется, может быть вызвана тем, что Hibernate выясняет, как создать экземпляр объекта без вызова его конструктора по умолчанию (или любого другого).
Возможно ли создать экземпляр объекта в Java без вызова конструктора?
Ответ 1
На самом деле, да, можно обойти конструктор, когда вы создаете экземпляр объекта, если вы используете objenesis для создания экземпляра объекта для вы. Для достижения этой цели используются байт-коды.
десериализация объекта будет также обходить конструктор.
Это невозможно сделать с помощью отражения.
Ответ 2
Только для завершения изображения: с помощью метода clone
для создания нового объекта также обходят конструкторы.
Ответ 3
Да, десериализация объекта не вызывает его конструктор.
Тем не менее, я не понимаю, почему спящий режим будет сериализовать объект, если, возможно, в кэше второго уровня.
Ответ 4
Десериализация включает создание объектов без вызова конструктора.
Это возможно (по крайней мере, с помощью Sun/Oracle JDK) сделать это программно. Это было описано в "Создание объектов без вызывающих конструкторов" , издание The Java Specialists 'Newsletter. В нем задействованы классы из пакетов sun.*
, поэтому они не переносимы.