Clase (no objeto) como parametro

Kaltresian
21 de Enero del 2006
Hola, Estoy aprendiendo JAVA y me gustaria saber si puedo pasar la referencia a una clase como parametro para que la clase que recibe pueda crear n objetos de este tipo de clase.. los objetos estarian referenciados por un arreglo de una clase abstracta desde la que se crea la clase que pasare como parametro.

CLASE_A ES ABSTRACTA

CLASE_B SE CREA EN BASE A CLASE_A


class CLASE_C{

CLASE_A[] ARREGLO;

CLASE_C(TIPO_CLASE PARAMETRO_TIPO){

ARREGLO[0] = NEW PARAMETRO_TIPO();
}}


Y para llamar a la clase C

TIPO_CLASE = CLASE_B.IDENTIFICACION_CLASE;

XXX = NEW CLASE_C(TIPO_CLASE)


Como ven no quiero pasar la referencia al objeto, por que dentro de CLASE_C necesito crear muchos objetos tipo CLASE_B, pero CLASE_C no tiene idea que existe CLASE_B solo CLASE_A.

He estado toda la mañana buscando si se puede hacer esto, pero no lo he pillado..









chuidiang
21 de Enero del 2006
Hola:

Te pongo todo esto un poco de memoria, tendrás que ver si es correcto del todo.

En java tienes el tipo Class que sirve para guardar clases (no objetos). Por ejemplo, si tienes las clases Clase1 y Clase2, puedes hacer esto

Class t1 = Clase1.class;
Class t2 = Clase2.class;

Por supuesto, puedes poner un parámetro de tipo Class para admitir clases.

Para instanciar una clase de esas que no sabes cual es, las clases deben tener todas algún tipo de constructor que sí sepas como es. Es decir, todas las clases deben tener un constructor sin parámetros, o un constructor que admita un entero, o lo que tu quieras, pero todas las clases deben tener el mismo tipo de constructor.

Si pones como condición que tengan un constructor sin parámetros, es más fácil. Basta con

Class t = String.class;
...
Object nuevaInstancia = t.newInstance();

Si quieres que tengan otro tipo de contructor, tienes que hacer algo como esto

Constructor [] constructores = t.getConstructors();

Dentro del array buscas el que te interesa, usando el método getParametesTypes() de Constructor.
Creas los parametros como un array de Object y llamas a

constructor[i].newInstance(arrayParametros);

Se bueno


Kaltresian
21 de Enero del 2006
Una ultima cosa, creo que me serviria pasar un objeto como parametro, clonarlo, no usando el constructor del objeto para crear variables u objetos que el objeto clase_a necesesite...