[ Foro de Java ]
Supongamos la creación de unos objetos de la clase Esfera, llamados esfera1 y esfera2. El objeto esfera1 siempre va a crearse, el objeto esfera2 no. Para saber cuándo se crea esfera2 se establece un switch:
switch () {
case 1:
Esfera esfera1 = new Esfera();
esfera1.metodo1();
esfera1.metodo2();
.
.
.
break;
case 2:
Esfera esfera1 = new Esfera(); <<<--- error compilador
Esfera esfera2 = new Esfera();
esfera1.metodo1();
esfera1.metodo2();
.
.
.
esfera2.metodo1();
esfera2.metodo2();
.
.
.
break;
}
El compilador da un error en el "case 2", debido a que en main el objeto Esfera1 ya está creado en el "Case 1", pese a estar en otro case. Mi pregunta es si hay otra forma más eficiente de hacerlo que dejándolo así y eliminando la línea que da error (eliminando o modificando la estructura entera de control).
Así es. Una solución sencilla es declarar ambos objetos antes del "switch", y dentro de él te limitas a inicializarlos, así:
Esfera esfera1, esfera2;
switch () {
case 1:
esfera1 = new Esfera();
esfera1.metodo1();
esfera1.metodo2();
.
.
.
break;
case 2:
esfera1 = new Esfera();
esfera2 = new Esfera();
esfera1.metodo1();
esfera1.metodo2();
.
.
.
esfera2.metodo1();
esfera2.metodo2();
.
.
.
break;
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)