Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Recorrer todos los objetos instanciados

Hola soy nuevo en este foro,
Es una pregunta un poco tonta pero he buscado un poco y no me queda claro del todo.
Tengo 100 objetos instanciados de tipo Clase1
for(int i=0;i<100;i++){
Clase1 c1=new Clase1();
}
Quisiera saber si hay alguna forma de hacer un bucle para recorrerlos todos y acceder a sus métodos...
Ahora mismo lo que hago es en el constructor de Clase1 añado cada objeto a un ArrayList estático pero quisiera saber si se puede hacer sin necesidad del ArrayList o equivalente ya que Java internamente si que tiene un array de objetos de tipo Clase1.
Saludos.

noviembre 21, 2014 | Registered Commentervictorfz

Bueno, aunque resulte obvio, supongo que esto no te vale, ¿no?


private static int final TAMANO_LISTA = 100;
List<Clase1> listaClase1 = new ArrayList<>(TAMANO_LISTA);
for(int i=0;i<TAMANO_LISTA;i++) {
listaClase1.add(new Clase1());
}

Si no haces esto, o lo que estás haciendo con el ArrayList estático de la clase, puede ser que no llegues a tener realmente 100 instancias creadas de Clase1. Con tu bucle (y si no tuvieras ese ArrayList estático que comentas), como cada vez que creas una nueva instancia borras la única referencia que había a la instancia creada en la pasada anterior del bucle, estás entregando esa instancia descartada al recogedor de basura, y éste podría eliminarlas.

Por tanto, para mí no es necesariamente cierto que Java tenga ese array interno de objetos que tú comentas.

noviembre 21, 2014 | Registered Commenterrickiees

"... ya que Java internamente si que tiene un array de objetos de tipo Clase1."

No se puede acceder a las estructuras internas de la Máquina Virtual, si es a eso a lo que te refieres. Porque no existe ningún "array interno de objetos", ni en el JDK, ni creado por el compilador externo a bytecode.

noviembre 22, 2014 | Registered Commenterchoces

Primero y principal ArrayList y todas las colecciones usan arreglos primitivos de tipo Clase variable[]

Segundo puedes hacerlo con arreglos primitivos

int numeroInstancias=100;
Clase arreglo[]=new Clase[numeroInstancias];
for (int i = 0; i < arreglo.length; i++) {
arreglo[i]=new Clase();
}

diciembre 3, 2014 | Registered Commenternelsonxx1