Clase (no objeto) como parametro
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..
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..
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
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
