Как в 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