Java:可变长度参数作为递归列表

jua*_*cks 2 java arrays parameters recursion list

我会像下面的递归方法:

private Node getElementRec(Node currentNode, String ... names) {
    if (null == names || names.length == 0)
        return currentNode;
    else {
        Node child = currentNode.getChildWithName(names[0]);
        return getElementRec(child, namesAux.subList(1, names[1,]));
    }
}
Run Code Online (Sandbox Code Playgroud)

由于可变长度的Java参数(这里names)是数组,我不能做类似的东西names.sublist(1, names.size())虽然效率很低,但我试图将数组转换为列表然后将其传递给方法,但它不接受列表

所以问题是:在Java中是否可以对可变长度参数进行递归(Type ... parameter)?我展示的东西有可能吗?

谢谢

Pet*_*nov 5

您可以使用Arrays类中的copyOfRange函数传递给函数

Arrays.copyOfRange(names, 1, names.length)
Run Code Online (Sandbox Code Playgroud)

避免复制的另一种方法是修改函数以接受开始和结束索引:

private Node getElementRec(Node currentNode, int start, int end, String ... names) {
    if (null == names || start >= end || start < 0 || end > names.length)
        return currentNode;
    else {
        Node child = currentNode.getChildWithName(names[start]);
        return getElementRec(child, start+1, end, names);
    }
}
Run Code Online (Sandbox Code Playgroud)