Вывод в консоль:
5
4
3
2
1
class FirstClass, method someAction
class SecondClass, method someAction
Specific action for anonymous SecondClass, param = 0
Count of created Action objects is 2
class SecondClass, method someAction
Specific action for anonymous SecondClass, param = -1
Count of created Action objects is 3
Пропуски строк есть, потому что они изначально были добавлены в переменную SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM.
Вопрос не в том, почему не проходит, так как мне это и так подписал валидатор (хотя с 1 и 2 я не согласен. Вывод такой же, а строки пустые, потому что константа начинается с "\n", да и саму константу я в выводе использую), а в том, действительно ли код не отвечает задаче? Вывод-то правильный, но я не особо понял, что происходит в коде и зачем он нужен. Можно в двух словах пояснить? Типа "он подсчитывает количество созданных потомков класса Action" или что-то такоеpackage com.javarush.task.task24.task2405;
/*
Black box
*/
public class Solution implements Action {
public static int countActionObjects;
private int param;
private Action solutionAction = new Action() {
//напишите тут ваш код
public void someAction() {
//напишите тут ваш код
int paramCopy = param;
while (Solution.this.param > 0) {
System.out.println(param--);
}
if(paramCopy > 0) {
FirstClass firstClass = new FirstClass() {
@Override
public Action getDependantAction() {
return new SecondClass();
}
};
firstClass.someAction();
firstClass.getDependantAction().someAction();
} else {
new SecondClass().someAction();
}
System.out.println(SecondClass.SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM + Solution.this.param);
}
};
public Solution(int param) {
this.param = param;
}
@Override
public void someAction() {
solutionAction.someAction();
}
/**
* 5
* 4
* 3
* 2
* 1
* class FirstClass, method someAction
* class SecondClass, method someAction
* Specific action for anonymous SecondClass, param = 0
* Count of created Action objects is 2
* class SecondClass, method someAction
* Specific action for anonymous SecondClass, param = -1
* Count of created Action objects is 3
*/
public static void main(String[] args) {
Solution solution = new Solution(5);
solution.someAction();
System.out.println("Count of created Action objects is " + countActionObjects);
solution = new Solution(-1);
solution.someAction();
System.out.println("Count of created Action objects is " + countActionObjects);
}
}