2010-08-15 8 views
17

Estoy tratando de corregir un error en uno de mis programas, lo que creo que podría deberse a que Hibernate averiguó cómo crear una instancia de un objeto sin llamar a su constructor predeterminado (o cualquier otro).¿Es posible crear una instancia de un objeto en Java sin llamar al constructor?

+3

Posiblemente deberías publicar el problema original en lugar de una solución supuesta. –

+2

Hibernate usa el constructor vacío predeterminado de las entidades. Estás en el camino equivocado. Publique su problema en su lugar. –

Respuesta

23

En realidad, sí, es posible omitir el constructor al crear una instancia de un objeto, si usa objenesis para crear una instancia del objeto para usted. Realiza manipulaciones de código de bytes para lograr esto.

Deserializar un objeto también omitirá el constructor.

No es posible hacerlo utilizando la reflexión.

7

Sí, la deserialización de un objeto no invoca su constructor.

Dicho esto, no veo por qué hibernate serializaría un objeto, a menos que tal vez en el segundo nivel de caché.

8

Solo para completar la imagen: utilizando el método clone para crear un nuevo objeto, también pasa por alto a los constructores.

+0

siempre que clone() se implemente correctamente, por supuesto. Es posible anular el clon para que actúe como un método de fábrica que no utiliza super.clone(). (Si bien debe usarse super.clone(), no el constructor) – DerMike

Cuestiones relacionadas