используйте этот метод: -
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
stackTraceElement e = stacktrace[2];//maybe this number needs to be corrected
System.out.println(e.getMethodName());
Вызывающий пример метода Код здесь: -
public class TestString {
public static void main(String[] args) {
TestString testString = new TestString();
testString.doit1();
testString.doit2();
testString.doit3();
testString.doit4();
}
public void doit() {
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];//maybe this number needs to be corrected
System.out.println(e.getMethodName());
}
public void doit1() {
doit();
}
public void doit2() {
doit();
}
public void doit3() {
doit();
}
public void doit4() {
doit();
}
}
TLDR : не изобретать велосипед, использовать существующие алгоритмы и структуры.
Я предполагаю, что ваш вопрос не о тренировочном упражнении, а о реальной проблеме. Если это упражнение, постарайтесь получить хорошее представление о рекурсии на простом в использовании языке по вашему выбору в большом сообществе, прежде чем вернуться к x ++.
Ваш метод рекурсии выглядит неполным, потому что в каждой рекурсии вы перебираете все записи из tmpBom
, что (если вы не измените записи в этой таблице где-то еще) не имеет смысла и никогда не завершится. Я также не понимаю, как этот метод может дать результат, который вы описываете. Я предлагаю вам взглянуть на некоторые учебные материалы по алгоритму рекурсии, чтобы узнать об основных частях рекурсии.
Вы отметили вопрос x ++ , и синтаксис также очень похож на этот. К сожалению, вы не добавили информацию о том, какую версию microsoft-Dynamics вы используете, но я предполагаю Dynamics-Ax-2012 , поскольку в настоящее время это самая распространенная версия в использовании. [ 118]
В этой версии уже есть готовый отчет SSRS, который покажет вам структуру ведомости материалов. Вы можете вызвать отчет в Управление запасами> Отчеты> Спецификации> Строки . Следует довольно легко изменить этот отчет, чтобы он также отображал уровень, если отчет еще не удовлетворяет вашим требованиям.
Если вам все еще нужно реализовать собственное решение, взгляните на класс BOMSearch
и его детей. Он используется в нескольких местах (проверьте перекрестные ссылки), а также может использоваться для расширения / взрыва спецификации.
Также обратите внимание, что есть много статей, которые пытаются объяснить, как расширить или взорвать спецификацию в коде x ++, но, как и во всех вещах в Интернете, будьте осторожны: большинство из них неполные или простые неправильно.