[ Foro de Java ]

Creación de objetos en una sentencia switch

16-Mar-2014 14:05
Angel Bravo
1 Respuestas

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).


19-Mar-2014 11:31
Nacho Cabanes (+84)

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.)