Чтобы повторить и уточнить комментарии Мэтта Б и Ишая:
Если вы делаете это, потому что вы пишете регистратор или поддерживаете трассировочную информацию или что-то подобное, хорошо, круто. Я использовал трассировку стека в производственном коде ровно один раз, и даже это было действительно проблемой отладки: у нас была проблема с неправильным закрытием соединений с базой данных, поэтому я изменил функцию «получить соединение с базой данных», чтобы сохранить личность вызывающей стороны и затем периодически проверял наличие мертвых соединений и видел, где они были созданы.
Встроенная в Java функция ведения журналов выполняет трассировку стека, поэтому она может записать, кто вызвал регистратор, в файл журнала. Я беспокоюсь об этом, поскольку понимаю, что трассировка стека стоит дорого, но неважно.
Но если вы делаете это, потому что ваша функция будет вести себя по-разному в зависимости от того, откуда она была вызвана, например, «если вызывается из класса X, обновлять данные клиента, в противном случае вызывается из класса Y, обновлять данные сотрудника» или что-то подобное Действительно плохая идея. Передайте параметр или напишите отдельные функции.