0

次の関数を持つクラスを持つ Java ライブラリを受け取りました。このタイプの関数を使用したことがないため、名前や使用方法がわかりません。

class SomeTree {

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

間違っている場合は訂正してください。ただし、メソッドは複数の引数を受け入れますよね? 事前に引数の数がわからない場合、どのように呼び出すのですか?

setNode() に渡す "Node[ ] nodeArray" があるとします。どうすればいいですか?

4

5 に答える 5

2

正解です。コンマで区切られた任意の数の Node パラメータを受け入れるか、Node 配列を取ります。

Node[] nodes = createNodeArray();
obj.setNodes(nodes);

また

Node node1 = createNode();
Node node2 = createNode();
obj.setNodes(node1, node2);
于 2013-05-20T14:43:40.390 に答える
1

はい、任意の数の Node インスタンスを受け入れます。(これには var 引数があります) そのため、次のようにメソッドを呼び出すときにノードの配列またはリストを渡すだけです。

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

これはvarargs構文と呼ばれます。指定された型の 0-n パラメータを渡すことができます。

メソッド内では、パラメーターは指定された型の配列であり、引数が渡されない場合 (つまり、ない場合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 に答える