Подтвердить что ты не робот

Возможно ли создать экземпляр объекта в Java без вызова конструктора?

Я пытаюсь исправить ошибку в одной из моих программ, которая, как мне кажется, может быть вызвана тем, что Hibernate выясняет, как создать экземпляр объекта без вызова его конструктора по умолчанию (или любого другого).

4b9b3361

Ответ 1

На самом деле, да, можно обойти конструктор, когда вы создаете экземпляр объекта, если вы используете objenesis для создания экземпляра объекта для вы. Для достижения этой цели используются байт-коды.

десериализация объекта будет также обходить конструктор.

Это невозможно сделать с помощью отражения.

Ответ 2

Только для завершения изображения: с помощью метода clone для создания нового объекта также обходят конструкторы.

Ответ 3

Да, десериализация объекта не вызывает его конструктор.

Тем не менее, я не понимаю, почему спящий режим будет сериализовать объект, если, возможно, в кэше второго уровня.

Ответ 4

Десериализация включает создание объектов без вызова конструктора.

Это возможно (по крайней мере, с помощью Sun/Oracle JDK) сделать это программно. Это было описано в "Создание объектов без вызывающих конструкторов" , издание The Java Specialists 'Newsletter. В нем задействованы классы из пакетов sun.*, поэтому они не переносимы.