0

我收到了一个 Java 库,它有一个具有以下功能的类。我以前从未使用过这种类型的函数,所以我不确定它被称为什么或如何使用它。

class SomeTree {

      public void setNode (Node... nodes) {
      }  
   }

如果我错了,请纠正我,但是该方法将接受多个参数,对吗?如果我事先不知道参数的数量,我将如何调用它?

假设我有一个“Node[] nodeArray”要传递给 setNode()。我该怎么做?

4

5 回答 5

2

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);
于 2013-05-20T14:43:40.390 回答
1

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);
于 2013-05-20T14:45:45.403 回答
1

是的,它将接受任意数量的节点实例。(这有 var args)所以你可以在调用方法时简单地传递数组或节点列表,如下所示。

setNode (nodeArray) or setNode (node1,node2,node3);
于 2013-05-20T14:46:19.603 回答
1

它被称为可变参数语法。它允许您传递指定类型的 0-n 个参数。

在该方法中,参数是一个指定类型的数组,如果没有传入任何参数(即 not null),该数组的长度为零。

你这样称呼它:

someTree.setNode();
someTree.setNode(someNode);
someTree.setNode(someNode, someOtherNode);
// etc
于 2013-05-20T14:46:37.147 回答
0

这称为varargs,如果需要,节点将转换为数组。所以你可以调用 setNode(n1,n2) 或 setNode(arrayOfNodes)

于 2013-05-20T14:46:05.190 回答