Как узнать какой метод вызвал текущий метод

212
24 марта 2018, 15:58

У меня есть в классе ONE два метода А и С, каждый передает свою уникальную строку в метод B, находящийся в классе TWO.

Метод B отправляет строку как sql запрос и возвращает результат.

И мне нужно понимать какой метод А или С прислал строку, от этот будет меняться логика работы метода В.

Как узнать какой метод вызвал текущий метод?

Answer 1

Можно получить текущий stacktrace и взять из него нужный элемент:

StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
System.out.println(stackTrace[2].getMethodName());

Для полного примера

public class ONE
{
    public static void A()
    {
        TWO.B();
    }
    public static void C()
    {
        TWO.B();
    }
}
public class TWO
{
    public static void B()
    {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        System.out.println(stackTrace[2].getMethodName());
    }
}
public static void main(String[] args)
{
    ONE.A();
    ONE.C();
}

Вывод:

A
C

READ ALSO
uncaught typeerror cannot read property 'options' of undefined [требует правки]

uncaught typeerror cannot read property 'options' of undefined [требует правки]

Здравствуйте, возникла следующая проблемав JS новичок, на уровне ("вывести свой алерт")

244
JSON меняет кавычки на "

JSON меняет кавычки на "

Если в title есть кавычки '' он меняется на " и получаю: Title for "Facebook"

235
Кнопка удаления Python + TurboGears2

Кнопка удаления Python + TurboGears2

Есть хранилище с контроллером:

234
SVG - проблемы с анимацией

SVG - проблемы с анимацией

У меня есть некоторые фигуры, которые я вращаю, используя две кнопки,- одну для вращения по часовой стрелке, а другую против часовой стрелки:

299