1. Восстанови логику метода someAction для поля solutionAction.
2. Пример вывода смотри в комментарии к методу main.
3. Подсказка: метод someAction анонимного класса поля solutionAction должен вызвать метод сабкласса FirstClass,
если param > 0, иначе вызвать метод сабкласса SecondClass.
Не изменяй
Black box
- 26
- Недоступна
Комментарии (169)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Leo 25 уровень, Москва
11 января, 22:18
Странная задача, вроде и лёгкая, но меня посетили очень странные чувства при её решении. Например, вывод переменной от 5 до 1, или же съедание валидатором такого решения третьего пункта:
0
Станислав 28 уровень
9 января, 15:39
Интересная задача :)
1. Важно объявить переменные в анонимном классе для классов First и Second, но не реализовывать их.
т.к. в задании есть счетчик создания объекта countActionObjects
условие требует во втором случае с параметром param -1 чтобы объект создался 1 раз!
А т.к у нас метод someAction класса Solution вызывает solutionAction.someAction() , то при повторном создании объекта Solution, countActionObjects покажет 4 !
+1
Vadim 27 уровень
22 декабря 2020, 19:10
в выводе получалось " Count of created Action objects is 1" и " Count of created Action objects is 2". оказалось нужно было цикл засунуть в if, а у меня сначала был цикл, а потом if
может кому-то будет полезно +1
Dmitry 27 уровень, Хабаровск
21 декабря 2020, 05:08
Эта задача, пожалуй, самая запутанная из всех, которые до этого были. С точки зрения постановки задачи, а точнее, её отсутствия =)
+1
Анатолий 29 уровень
11 декабря 2020, 08:10
По пункту использования строковых констант: SomeAction() из SecondClass вызывать не надо, берёте StringBuilder СекондКласса - sb, он модификатором protected обозначен, добавляете к нему public переменную SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM (у неё в начале символ перевода строки) и добавляете переменную param. Не забываем перед стрингбилдером и строковой константой через точку написать имя созданного объекта типа SecondClass. Вроде:
objSecCl.sb.append(objSecCl.SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM).append(param). Печатаете строку.
По поводу super.someAtion(): в методе ПервогоКласса, getDependantAction(), который вы реализуете, вставьте super.someAtion(). Посмотрите на вывод, удалите вызов ненужного метода Первого класса, если вы его написали в другом месте ;)
0
Alexander Software Developer
16 ноября 2020, 07:27
Забавно,
валидатор не пропустил по второму пункту ("Для вывода должны быть использованы строковые константы объявленные в классе SecondClass."), а схавал. 0
DZ 35 уровень
8 ноября 2020, 16:46
Пока делал эту задачу моё внутреннее состояние периодически менялось от брызгов радости с того, что понял пожелания разработчиков, до состояния расплющенного пятна высотой не выше плинтуса.
И что в итоге? В итоге я увидел, как можно играться с уже готовыми классами, используя их методы в анонимных классах или переписывая, меняя функциональность, имея доступ к переменным суперкласса.
Для подгона результатов решения к условию были созданы внутри анонимного класса в методе someAction () другие анонимные классы с нужными методами и вызовами. А когда валидатор возмутился: "И хде тут super.someAction()???", пришлось впихнуть в один из анонимных классов внутри другого такого же конструкцию в виде:
Я рад, что поэкспериментировал с анонимными классами, но я ничего не понял в этой задаче. +1
Ula08 31 уровень, Гродно
2 октября 2020, 19:53
Поясните, пожалуйста, где инициализируется переменная countActionObjects?
0
Interstellar Java Developer в EPAMExpert
19 октября 2020, 12:10
Эта переменная - статическая, примитивного типа int, поэтому она инициализируется при объявлении (по дефолту сразу присваивается 0)
+1
Ula08 31 уровень, Гродно
22 октября 2020, 18:24
Спасибо
0
wan-derer.ru 39 уровень, Москва
2 октября 2020, 09:35
Сделал, скорее всего, неправильно, особенно в части
super.someAction();
так, воткнул в случайное место чтобы компилятор не ругался. Валя скушала и ладно.
По поводу "херня, а не задача" - полностью солидарен! В первую очередь надо понимать что именно мы делаем, а здесь этим и не пахнет. В общем, авторам этих задач и рахдела в целом - твёрдый ноль!
0
Zhan Peskov 35 уровень, Москва
22 сентября 2020, 23:24
Со вторым классом самое лучшее и короткое решение это через абстрактный класс
new SecondClass() {
{
sb.append(SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM);
sb.append(param);
}
}.someAction();
остальное решаем сами и только потом подглядываем
+1