Вот как получить имя Class.method()
, вызвавшей в MyClass()
конструктор.
public static void main(String[] args) {
new MyClass();
}
public MyClass() {
StackTraceElement[] stackTrace = new Exception().getStackTrace();
System.out.println(stackTrace[1]); // prints MyClass.main(MyClass.java:7)
}
Мы сгенерирует исключение, но поймать его во времени Как указал на @Henrik ниже, мы не должны бросать исключения для проверки StackTrace. Но при необходимости мы можем дополнительно проанализировать текст метода захваченного метода invoker, чтобы удалить имя файла Java следующим образом.
System.out.println(
stackTrace[1].toString().split("\\(")[0]+"()"); // prints MyClass.main()
Это задано много раз, единственный способ создать исключение и проанализировать его стек (не приятно). – SJuan76