Компилятор ругается на невыполнение 3 и 4 условий.
Нисходящее преобразование не запрещено условиями задачи. Может быть Swich-case ему не нравится и ожидается решение через if-else? Как считаете?
package com.javarush.task.task14.task1407;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
Player and Dancer
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
String key;
while (!(key = reader.readLine()).equals("exit")) {
if ("player".equals(key)) {
person = new Player();
} else if ("dancer".equals(key)) {
person = new Dancer();
}
haveFun(person);
}
}
public static void haveFun(Person person) {
switch (person.getClass().getSimpleName()){
case "Player": {
Player person1 = (Player) person;
person1.play();
break;
}
case "Dancer": {
Dancer person1 = (Dancer) person;
person1.dance();
}
}
}
interface Person {
}
static class Player implements Person {
void play() {
System.out.println("playing");
}
}
static class Dancer implements Person {
void dance() {
System.out.println("dancing");
}
}
}