Объявление переменной внутри оператора `if` в Java, которая имеет другой тип в зависимости от условного

Я знаю, я знаю, есть масса простых ответов, которые охватывают большинство случаев, как этого избежать.

В моем случае я хочу использовать вводимую пользователем информацию для создания игроков ЦП в игре. Если пользователь выбирает простой режим, я хочу объявить и создать экземпляр класса EasyPlayer . В противном случае я хочу объявить и создать экземпляр класса HardPlayer . В любом случае конкретное имя переменной должно быть «cpu», а остальная часть кода работает с «cpu» без разбора.То есть все различия в том, как они работают, встроены в их разные классы, которые составляют подкласс класса CpuPlayer .

Вот код:

// Set the opponent.
if (difficulty == 0){
    EasyPlayer cpu = new EasyPlayer(num_rounds);
}
else{
    HardPlayer cpu = new HardPlayer(num_rounds);
}

Это вызывает у меня постоянно раздражающую ошибку не удается найти символ . Из того, что я могу прочитать, все говорят, что вы не можете делать объявления внутри такого условного выражения из-за проблем с областью видимости и вероятности того, что этого никогда не произойдет.

Если да, то каков правильный способ альтернативно объявить одну переменную как один из двух разных классов на основе пользовательского ввода?

5
задан ely 9 February 2012 в 03:47
поделиться