我收到的Java库有一个具有以下功能的类。我之前从未使用过这种类型的函数,因此我不确定它的名称或使用方法。
class SomeTree {
public void setNode (Node... nodes) {
}
}
如果我错了,请纠正我,但该方法会接受多个参数,对吗? 如果我事先不知道参数的数量,我该怎么称呼它?
假设我有一个“Node [] nodeArray”传递给setNode()。我该怎么做?
答案 0 :(得分:2)
正确,它将接受以逗号分隔的任意数量的Node参数,或者它将采用Node数组。
Node[] nodes = createNodeArray();
obj.setNodes(nodes);
OR
Node node1 = createNode();
Node node2 = createNode();
obj.setNodes(node1, node2);
答案 1 :(得分:1)
编译器会自动为您调整(数组到var-args)。
您需要做的只是将数组作为唯一参数传递。
Node[] myNodeArray = ........
setNode(myNodeArray);
答案 2 :(得分:1)
是的,它将接受任意数量的Node实例。 (这有var args)所以你可以在调用方法时简单地传递数组或节点列表,如下所示。
setNode (nodeArray) or setNode (node1,node2,node3);
答案 3 :(得分:1)
它被称为varargs语法。它允许您传递指定类型的0-n参数。
在方法中,参数是指定类型的数组,如果没有传入参数,则长度为零(即不是null
)。
你这样称呼它:
someTree.setNode();
someTree.setNode(someNode);
someTree.setNode(someNode, someOtherNode);
// etc
答案 4 :(得分:0)
这称为varargs,如果需要,节点将转换为数组。所以你可以调用setNode(n1,n2)或setNode(arrayOfNodes)