Black box

  • 26
  • Недоступна
1. Восстанови логику метода someAction для поля solutionAction. 2. Пример вывода смотри в комментарии к методу main. 3. Подсказка: метод someAction анонимного класса поля solutionAction должен вызвать метод сабкласса FirstClass, если param > 0, иначе вызвать метод сабкласса SecondClass. Не изменяй
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (160)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Алексей Шевченко
Уровень 38, Челябинск, Россия
7 июля, 16:19
Вау. Оставил комментарий возле создания FirstClass - валидатор пишет, что FirstClass не создан. 5 раз переписывал. Потом удалил комментарий и прошло.
Blame
Уровень 29, Омск, Россия
21 июня, 08:44
super.someAction() падла и без него все решается..
Silendor
Уровень 26, Самара, Россия
18 июня, 06:07
Кто-нибудь понял что за чёрная магия в их решении для getDependantAction?
return param > 0 ? Solution.this : this;
Что ещё за Solution.this?
Silendor
Уровень 26, Самара, Россия
19 июня, 13:10
Solution.this - экземпляр класса Solution. В это задаче мы возвращаем тот экземпляр, метод someAction(), которого будем вызывать, в зависимости от param. Если param больше нуля, вызывается someAction() экземпляра Solution, т.е. он тоже реализует Action. Если param меньше или равен нулю, вызывается someAction() экземпляра анонимного класса от FirstClass внутри анонимного класса от Action. Вообщем, если param больше 0, мы рекурсивно обращаемся к функции внутри Solution, в противном случае обращаемся к методу анонимного класса и завершаем вывод.
Андрей
Уровень 27, Киев, Украина
17 июня, 11:43
Непонятно только зачем вызывать метод родительского класса
Максим Дудин
Уровень 27, Калининград
15 июня, 19:44
Прошли первые полтора часа - ничего не понял... P.S. после прочтения\ комментариев понимание что и как сделать не пришло просто открыл референсное решение прошел ещё один вечер, потом утро.. пять страниц рукописного текста и я теперь пониманию как оно там у них всё работает..... ( и что в итоге они хотели) ну это я вам скажу... да я сам бы до такой мутохрени никогда не додумался... =)
25 мая, 08:45
Задача на подгонку к требуемому выводу. Что только не делала: если param > 0 после вывода param ...3 2 1 param=0; после чего создавала secondClass = new SecondClass(){ @Override public void someAction(){}}, где выводила sb.append(SecondClass.SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM).append(param).toString() при создании экземпляра анонимного класса наследующего от FirstClass определяла метод public Action getDependantAction() и из него вызывала super.someAction() и secondClass.someAction(); Не сказать, что после всего этого я достигла просветления, а скорее достигла ощущения, что сварила какое-то жуткое варево, секрет которого будет утерян
Евгения
Уровень 26, Минск
2 мая, 13:53
Запутанная задача) Осторожно!)) Решая ее, рискуете почувствовать себя ничтожеством))))😀 Мой метод Валя принял, константу SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM обрезала substring(1). Но задумка была видимо совсем не в этом. если я правильно поняла, здесь рекурсия с методом класса Solusion и цикл от 5 до 1 печатается с помощью рекурсии. Сложное для понимания решение. Но валя вполне пропускает и через цикл в getDependantAction.
Flexo Bending Unit #3370318
30 апреля, 18:10
Очень абстрактная задача c очень конкретными требованиями (шаг влево-шаг вправо) -- минус в карму составителей. Сначала написал всю необходимую логику действий в конструкторах локальных подклассов, вывод полностью соответствовал, но очевидно, нужные методы не вызывались. Согласен, давай по новой. Почитал комментарии и переопределил метод в локальных подклассах анонимного класса. И снова - вывод полностью соответствует... Валиднул - выполняются три из пяти условий. Почему не выполняются последние два, объекты же вроде созданы?
public void someAction() {
    if (param > 0) {
        FirstClass firstClass = new subFirstClass();
        firstClass.someAction();
    } else {
        SecondClass secondClass = new subSecondClass();
        secondClass.someAction();
    }
}
Оказывается, надо не просто локальные классы в анонимке прописать а собственно создать два анонимных класса в анонимном
В методе someAction анонимного класса Action созданного в классе Solution должен быть создан объект типа FirstClass.
Вот это оно самое и означает... На самом деле, это же очень логично: зачем анонимному классу полноценные внутренние классы? Трудно перестать мыслить в парадигме "классы - это шаблоны", как ты делал все 30 уровней до этого, и переключиться на новую "классы - это объекты".
Flexo Bending Unit #3370318
30 апреля, 19:02
а вот как вообще можно было допереть, что должен делать метод public Action getDependantAction()? такое ощущение, что метод создавался под конкретное решение у меня он просто в цикле делает обратный отсчёт param, лол
Сергей
Уровень 25, Киев, Украина
31 марта, 19:33
8069 После if (param > 0) не делайте блок else, просто объявляйте new SecondClass
Михаил
Уровень 37, Киев, Украина
21 марта, 12:33
о задаче: очень интересно что это и зачем??