Lo sé, lo sé, hay un montón de respuestas simples que cubren la mayoría de los casos sobre cómo evitar esto.Declarar una variable dentro de una instrucción `if` en Java que es un tipo diferente según el condicional
En mi caso, quiero utilizar la información de entrada del usuario para crear jugadores de CPU en un juego. Si el usuario elige el modo fácil, entonces quiero declarar y crear instancias de una instancia de la clase EasyPlayer
. De lo contrario, quiero declarar y crear una instancia de una instancia de la clase HardPlayer
. De cualquier manera, el nombre específico de la variable debe ser "cpu" y el resto del código opera en "cpu" indiscriminadamente. Es decir, todas las diferencias en cómo operan están integradas en sus diferentes clases, que subclasifican la clase CpuPlayer
.
Así que aquí está el código:
// Set the opponent.
if (difficulty == 0){
EasyPlayer cpu = new EasyPlayer(num_rounds);
}
else{
HardPlayer cpu = new HardPlayer(num_rounds);
}
Esto me da el error cada vez más molesto cannot find symbol
. Por lo que puedo leer, todos dicen que no se pueden hacer declaraciones dentro de un condicional como este debido a problemas de alcance y la posibilidad de que nunca ocurra.
Si es así, ¿cuál es la forma correcta de declarar alternativamente una sola variable como una de dos clases diferentes según la entrada del usuario?
+1 para darse cuenta de que la solución que tiene aquí es insuficiente y viene a SO para obtener ayuda. –