Как в Java получить класс, который выполнил вызов текущего класса?

У меня есть класс CfgMgr, который часто вызывают другие классы в программе. Как в CfgMgr узнать, какой класс вызвал его в данный момент?


Ответы (1 шт):

Автор решения: Alexey R.

Через стрек трейс. Самый простой и надежный метод - создать объект типа Exception.

Например есть такой вызывающий класс:

package so;

public class Caller {

    public static void main(String[] args) {
        new Callee().call();
    }

}

Теперь вызываемый класс мог бы реализовать такую логику:

package so;

public class Callee {

    public void call(){
        System.out.println("I am called from: " + new Exception().getStackTrace()[1].getClassName());
    }
}

Результатом запуска стало бы:

I am called from: so.Caller
→ Ссылка