Вроде бы работает, но валидацию не проходит в чем проблема не могу сообразить.
package com.javarush.task.task09.task0902;
/*
И снова StackTrace
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Solution {
public static void main(String[] args) {
method1();
}
public static String method1() {
method2();
StackTraceElement[] n1 = Thread.currentThread().getStackTrace();
List<StackTraceElement> elements = new ArrayList<>(Arrays.asList(n1));
String s1 = elements.get(elements.size()-1).getMethodName();
return s1;
}
public static String method2() {
method3();
StackTraceElement[] n2 = Thread.currentThread().getStackTrace();
List<StackTraceElement> elements = new ArrayList<>(Arrays.asList(n2));
String s2 = elements.get(elements.size()-2).getMethodName();
return s2;
}
public static String method3() {
method4();
StackTraceElement[] n3 = Thread.currentThread().getStackTrace();
List<StackTraceElement> elements = new ArrayList<>(Arrays.asList(n3));
String s3 = elements.get(elements.size()-3).getMethodName();
return s3;
}
public static String method4() {
method5();
StackTraceElement[] n4 = Thread.currentThread().getStackTrace();
List<StackTraceElement> elements = new ArrayList<>(Arrays.asList(n4));
String s4 = elements.get(elements.size()-4).getMethodName();
//System.out.println("4 метод - " + s);
return s4;
}
public static String method5() {
StackTraceElement[] n5 = Thread.currentThread().getStackTrace();
List<StackTraceElement> elements = new ArrayList<>(Arrays.asList(n5));
String s5 = elements.get(elements.size()-5).getMethodName();
//System.out.println(s5);
return s5;
}
}
/* И снова StackTrace
Написать пять методов, которые вызывают друг друга.
Каждый метод должен возвращать имя метода, вызвавшего его, полученное с помощью StackTrace.
Требования:
1. В классе должно быть 5 методов (метод main не учитывать).
2. Каждый метод должен вызывать следующий: main вызывать method1, method1 вызывать method2 и т.д.
3. Каждый метод должен возвращать имя метода, вызвавшего его.
4. Для получения имени вызвавшего метода, используй метод getMethodName.*/