Добрый вечер. Помогите, пожалуйста, с данной задачей. Возникло несколько вопросов:
1. Почему, если писать так:
if(person instanceof Player){
new Player().play();
}
if(person instanceof Dancer){
new Dancer().dance();
}
то код компилируется(проверку не проходит), а если так:
if(person instanceof Player){
person.play();
}
if(person instanceof Dancer){
person.dance();
}
то не компилируется. В переменной person ведь находится объект либо Dancer, либо Player, в чем проблема?
2. (уже для решения самой задачи) Каким образом можно вызвать в этот же блоке кода методы play и dance? Изменять их нельзя. Испробовал все, что приходило в голову, но не получалось
Спасибо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();
}
haveRest(person);
}
}
public static void haveRest(Person person) {
//напишите тут ваш код
if(person instanceof Player){
new Player().play();
}
if(person instanceof Dancer){
new Dancer().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");
}
}
}