Наименее инвазивный «ручной» способ сделать это (также самый хакерский) - это, вероятно, создать статическую переменную в вашем классе, которая имеет проблему с рекурсией.Когда вы вводите рекурсивный метод, используйте его для подсчета глубины рекурсии (путем сложения или вычитания), а когда вы выходите, поменяйте местами то, что вы сделали при входе.
Это не здорово, но это намного лучше, чем пытатьсяустановить глубину стека (почти любой системный вызов в java будет проходить через 5 уровней стека, даже не мигая).
Если вы не используете static, вам может понадобиться передать переменную глубины стека черездовольно много классов, они очень инвазивны для остальной части вашего кода.
В качестве альтернативы я предлагаю, чтобы вы допустили сбой "нормально" и бросили исключение, а затем некоторое время медитировали на трассировке стека - онидействительно информативным и, вероятно, приведет вас к источнику вашей проблемы быстрее, чем что-либо еще.
static int maxDepth = 5;
public void recursiveMethod() {
if(maxDepth-- == 0)
throw new IllegalStateException("Stack Overflow");
recursiveMethod();
maxDepth++;
}