Прежде всего: переменные параметры арности реализуются с использованием массивов, а не как векторов (вектор обычно означает java.util.Vector
в Java, что будет реализацией List
, которая будет иметь метод subList()
).
Как вы поняли, коллекции (в частности, List
объекты) допускают гораздо более богатые взаимодействия, чем простые массивы. К счастью, есть простой способ преобразовать массив в List
, используя Arrays.asList()
.
Я бы реализовал рекурсивный метод, используя List<String>
вместо String...
и , предоставляя удобный метод, который принимает переменный параметр arity:
private Node getElementRec(Node currentNode, String... names) {
return getElementRec(currentNode, Arrays.asList(names));
}
private Node getElementRec(Node currentNode, List<String> names) {
if (null == names || names.isEmpty())
return currentNode;
else {
Node child = currentNode.getChildWithName(names.get(0));
return getElementRec(child, names.subList(1, names.length()-1));
}
}