Альтернативным методом является создание, но не создание исключения, и использование этого объекта для получения данных трассировки стека, поскольку метод включения будет , как правило, , в индекс 0 - пока JVM хранит эту информацию, как уже упоминалось выше. Однако это не самый дешевый метод.
С Throwable.getStackTrace () (это было так же, как минимум с Java 5):
Нулевой элемент массива (при условии, что длина массива не равна нулю) представляет вершину стека, что является последним вызовом метода в последовательности. Обычно , это точка, в которой этот бросаемый объект был создан и брошен.
В приведенном ниже фрагменте предполагается, что класс не является статичным (из-за getClass ()), но это в стороне.
System.out.printf("Class %s.%s\n", getClass().getName(), new Exception("is not thrown").getStackTrace()[0].getMethodName());