Я следую учебному пособию по синтаксическому анализу XML в Java (ThinMatrix's. Youtube) и пытаюсь понять, как работает код, шагая через него.
private static XmlNode loadNode(BufferedReader reader) throws Exception {
String line = reader.readLine().trim();
if (line.startsWith("</")) {
return null;
}
String[] startTagParts = getStartTag(line).split(" ");
XmlNode node = new XmlNode(startTagParts[0].replace("/", ""));
addAttributes(startTagParts, node);
addData(line, node);
if (CLOSED.matcher(line).find()) {
return node;
}
XmlNode child = null;
while ((child = loadNode(reader)) != null) {
node.addChild(child);
}
return node;
}
В этом блоке впервыечто первый «if-оператор» выполняется - т.е. когда синтаксический анализатор впервые читает закрывающий тег - выполняется строка «return null», а затем программа переходит к оператору while в нижней части метода.Я не видел такого поведения раньше - почему программа не выходит из метода после оператора return null.