我收到了一个 Java 库,它有一个具有以下功能的类。我以前从未使用过这种类型的函数,所以我不确定它被称为什么或如何使用它。
class SomeTree {
public void setNode (Node... nodes) {
}
}
如果我错了,请纠正我,但是该方法将接受多个参数,对吗?如果我事先不知道参数的数量,我将如何调用它?
假设我有一个“Node[] nodeArray”要传递给 setNode()。我该怎么做?
我收到了一个 Java 库,它有一个具有以下功能的类。我以前从未使用过这种类型的函数,所以我不确定它被称为什么或如何使用它。
class SomeTree {
public void setNode (Node... nodes) {
}
}
如果我错了,请纠正我,但是该方法将接受多个参数,对吗?如果我事先不知道参数的数量,我将如何调用它?
假设我有一个“Node[] nodeArray”要传递给 setNode()。我该怎么做?
Correct, it will accept any number of Node parameters separated by a comma, or it will take a Node array.
Node[] nodes = createNodeArray();
obj.setNodes(nodes);
OR
Node node1 = createNode();
Node node2 = createNode();
obj.setNodes(node1, node2);
Compiler make the adapation (array to var-args) automatically for you.
All you need to do is to merely pass your arrays as the unique argument.
Node[] myNodeArray = ........
setNode(myNodeArray);
是的,它将接受任意数量的节点实例。(这有 var args)所以你可以在调用方法时简单地传递数组或节点列表,如下所示。
setNode (nodeArray) or setNode (node1,node2,node3);
它被称为可变参数语法。它允许您传递指定类型的 0-n 个参数。
在该方法中,参数是一个指定类型的数组,如果没有传入任何参数(即 not null
),该数组的长度为零。
你这样称呼它:
someTree.setNode();
someTree.setNode(someNode);
someTree.setNode(someNode, someOtherNode);
// etc
这称为varargs,如果需要,节点将转换为数组。所以你可以调用 setNode(n1,n2) 或 setNode(arrayOfNodes)