Java - Clonar Objetos

 
Vista:

Clonar Objetos

Publicado por Alvaro (2 intervenciones) el 04/09/2002 21:36:26
Hola a todos,

Tengo el siguiente problema, necesito clonar un Object, pero al ser el método clone() protected, solo puedo usarlo en las clases extendidas que implementen el interface Cloneable. El problema es que tengo esta clase:

public class Lookup
{
private Object objeto;

public Lookup
{
// Empieza una transación dentro de una determinada BD
// Dentro de la transación ejecuto un método lookup() que
// devuelve un Object
objeto = lookup();
// Se cierra la transación
}

public Object getObjeto() {
return objeto;
}
}

El tema de las transaciones es de un Sistema Gestor de Bases de Datos Orientada a Objetos que estoy usando.

Prentendo que esta clase sea un comando genérico. Se recuperarán Objetos de una base de datos y se hará un Casting (ahormado) con el método getObjecto() al tipo de clase que sea, por ejemplo Clientes.

La cuestión es que cuando cierro la transación la referencia 'objeto' apunta a null. He intentado clonar el objeto, pero tengo el problema que expliqué arriba, el método clone() de Object es protected.

Podeis decirme algo al respecto, por favor.

Un saludo,

Alvaro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Clonar Objetos

Publicado por Oscar (661 intervenciones) el 05/09/2002 05:28:38
No creo que sea necesario clonar los objetos.

De que forma estas creando el objeto a partir de la base de datos. Te agradeceria una pequeña porcion de codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clonar Objetos

Publicado por Alvaro (2 intervenciones) el 05/09/2002 19:31:42
Hola Oscar,

Creo que lo que me preguntas es como el método lookup que puse en el código recupera el objeto de la base de datos. Si es eso te explico.

Estoy usando un SGBDOO el cuál te proporciona las siguientes clases:

"Database", para manejar las bases de datos y "Transaction", para realizar toda operación sobre la base de datos dentro de una transacción.

El código entero sería:

Object objeto;

Database bd = new Database();
bd.open( "urlBD", Database.OPEN_READ_ONLY );
// La urlBD es el servidor donde está la base de datos
// y el otro un parámetro para abrir la base de datos
Transaction txn = new Transaction(bd);
txn.begin();
objeto = bd.lookup(identificadorObjeto);
// identificadorObjeto es un String que identifica al
// objeto de forma única cuando se almacenó en la base
// de datos
txn.commit(); // Termina la transacción
bd.close();

No he puesto el código de manejo de excepciones para no liarlo. El rollo está que el método lookup(String idObjeto) es de la clase Database proporcionada por el gestor de bases de datos y no se como lo implementan, pero devuelve un Object. ¿Como puedo guardarlo en una referencia Object ya sean Clientes, Pacientes, o lo que sea? Creo que lo mejor sería clonarlo ¿no?

Un saludo

Alvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clonar Objetos

Publicado por Oscar (661 intervenciones) el 06/09/2002 05:49:45
Aun no entiendo el problema, en el mensage anterior pense que el problema es que al cerrar la transaccion el objeto apunta a null. No entiendo como puede pasar eso.
Ahora, creo que lo que quieres es almacenar el objeto regresado en su instancia de clase
correcta. Creo que puedes hacer algo asi:
if(objeto instanceof Clientes) {
Clientes cliente = objeto;
} else if(objeto instaceof Pacientes) {
Pacientes paciente = objeto;
} ....

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar