Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
10 Июл 2023
2 мин
407

Получение имени текущего выполняемого метода в Java

Ситуации, когда необходимо получить имя текущего выполняемого метода, могут встретиться довольно часто. Например, при отладке программы или при логировании.

Ситуации, когда необходимо получить имя текущего выполняемого метода, могут встретиться довольно часто. Например, при отладке программы или при логировании. Приведем пример: есть метод, в котором происходит некоторое действие, и результат этого действия записывается в лог. В логе необходимо указать, в каком именно методе было выполнено это действие.

В таком случае возникает вопрос: как получить имя текущего метода в Java? Для этого существует несколько способов.

Способ 1. Использование StackTrace

Java предоставляет возможность получить стек вызовов для текущего потока с помощью метода Thread.currentThread().getStackTrace(). Этот метод возвращает массив StackTraceElement, каждый из которых представляет собой элемент стека вызовов. Нулевой элемент массива ([0]) — это сам метод getStackTrace, первый элемент ([1]) — это метод, который вызвал getStackTrace, и так далее. Таким образом, чтобы получить имя текущего метода, нужно обратиться к второму элементу этого массива.

String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();

Способ 2. Использование исключений

Другой способ получить стек вызовов — использовать исключения. Метод Throwable.getStackTrace() также возвращает массив StackTraceElement, аналогичный тому, который возвращает Thread.currentThread().getStackTrace(). Однако в этом случае нулевой элемент массива ([0]) — это метод, где было создано исключение.

String methodName = new Exception().getStackTrace()[0].getMethodName();

Оба этих способа позволяют получить имя текущего выполняемого метода. Однако стоит помнить, что оба способа имеют относительно высокую стоимость в плане производительности, поэтому их стоит использовать с умом и не злоупотреблять.

Опрос для читателей: Какой язык программирования лучше? Узнайте результат после голосования

Добавить комментарий