Всем доброго дня. Я вот решал данную задачку через IDEA, и она мне подсказала в двух моментах, и у меня возникли вопросы типа что это? : 1) когда я пишу условие соответствия key с например "user" if(key.equals("user")) { person = new Person.User(); } Почему через Person.User, а не просто new User(); Потому что класс находиться внутри интерфейса? Просто такие данные мы не получали до этого. 2) в методе doWork(Person person) я пишу следующее : public static void doWork(Person person) { if(person instanceof Person.User) { ((Person.User) person).live(); } И второй вопрос: что это такое ((Person.User) person.)live(); ? Зачем было написано (Person.User)? Это сужение ссылочного типа или что? И такого рода данных мы не получали. Прошу дайте понятное разяснение этим двум вопросам, спасибо за ранее