Voici le code :
package stacktrace.test;
public class A {
public static void main(String[] args) {
B.f();
}
}
interface B {
static void f() {
C.f();
}
}
interface C {
static void f() {
StackTraceElement[] stackTrace1 = (new Exception()).getStackTrace();
StackTraceElement[] stackTrace2 = Thread.currentThread().getStackTrace();
StackTraceElement x1 = stackTrace1[1];
StackTraceElement x2 = stackTrace2[1];
System.out.println(x1.getClassName());
System.out.println(x2.getClassName());
}
}
Et la production :
stacktrace.test.B
stacktrace.test.C
Je vérifie le Thread.currentThread().getStackTrace()
il appelle (new Exception()).getStackTrace();
. Dans ce cas, pourquoi est-ce que j'obtiens des résultats différents ?
Merci d'avance !