3

だから私はString...Javaのポイントを理解しようとしてきました。私が理解していることから、それは String[] とほぼ同じですが、ここまたは Google でそれに関する情報を見つけることができません。

誰かがそれが何であるか、そしてそのようなものの適切な使用法を教えてもらえますか? (パラメータを持つメソッドがあるとしましょうmyMethod(String... args) { ... }

ありがとう!

4

3 に答える 3

7

String[]この構文は、型に関する限り、実際には と同じです。Stringただし、可変数のパラメーターを指定することにより、呼び出し元が暗黙的に配列を作成できるようになります。

myMethod("a", "b", "c");
myMethod(); // Empty array is also allowed
myMethod("a", "b");

この構文の制限の 1 つは、そのような引数はメソッドのパラメーター リストの末尾にのみ表示される可能性があることです。

于 2013-08-25T20:02:54.987 に答える
2

myMethodが0 個以上のString引数を受け入れることを意味します。たとえば、ここを参照してください。Java 言語仕様では、これは可変アリティパラメータと呼ばれます。

メソッドまたはコンストラクターの最後の仮パラメーターは特別です。型の後に続く省略記号で示される可変アリティ パラメーターである場合があります。

最後の仮パラメータが可変アリティ パラメータの場合、メソッドは可変アリティ メソッドです。それ以外の場合は、固定アリティ メソッドです。

JLSは、可変アリティ パラメータがある場合にメソッド シグネチャがどのように照合されるかについても、ぞっとするほど詳細に説明しています。

于 2013-08-25T20:02:18.513 に答える
2

...、メソッドがvar-args 、つまり可変 (数) 引数をサポートしていることを示します。

だから、あなたはあなたのmyMethod()として呼び出すことができます

myMethod(); // or
myMethod(str1); // or
myMethod(str1, str2); // and so on

同じメソッド シグネチャを使用しますmyMethod(String... str)複数のパラメーターを持つvar-argメソッドを宣言する場合、 var-argパラメーターは、他のすべての通常のメソッド パラメーターの後に成功する必要があります。

メソッド内では、渡されたすべての引数に、パラメーターと同じ参照名を持つ配列としてアクセスできるようになります。というわけで、ここは実際に使えstr.lengthます。

この機能は非常に柔軟です。それにa を渡すこともできますString[]。しかし、その逆は正しくありません。配列を取るメソッドは、個々の文字列を受け入れません。

于 2013-08-25T20:03:08.860 に答える