Подтвердить что ты не робот

Более короткий метод динамического определения имени текущего метода

Я ищу способ получить имя текущего метода, не создавая пустой объект. Есть ли способ сделать это? Это приведет к упорядочению кода регистрации.

Вот что мы делаем сейчас:

new Object() {}.getClass().getEnclosingMethod().getName(
4b9b3361

Ответ 1

Как насчет Thread.currentThread().getStackTrace()[1]?

Так как это позволяет вам изучать более высокие уровни трассировки стека, вы можете легко обернуть это в вспомогательный метод (см. ниже). Он также дает вам возможность получить немного больше информации, чем просто имя метода, например имя файла, номер строки и т.д.

edit Вспомогательный метод может выглядеть примерно так (спасибо @Esailija):

public static String getMethodName() {
    return Thread.currentThread().getStackTrace()[2].getMethodName();
} 

Ответ 2

Вы также можете использовать

Thread.currentThread().getStackTrace()[1].getMethodName() 

содержит последний вызов метода, но не короче, чем

new Object() {}.getClass().getEnclosingMethod().getName

Я не знаю, какой способ сортировщика это сделать.