2012-03-15 10 views
6

可能性の重複:
varargs and the '…' argument
Java, 3 dots in parametersjavaでは "String ..."とは何ですか?

私は私のAndroidのJavaファイルにこの定義を見ました。 これはString []と似ています。彼らは違いますか? ありがとうございます。

+10

http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html – assylias

+0

て、http://のstackoverflow。 com/questions/1656901/varargs-and-the-argument – assylias

+0

...または過去5年ほど前に書かれた良いJava教科書。 –

答えて

5

それは、例えば、パラメータ

として、配列の項目を記述するための構文です:

public String first (String... values) { 
    return values[0]; 
} 

その後、あなたはjavacompilerはの配列を作成しますfirst("4","2","5","67")

でこのメソッドを呼び出すことができますパラメータはそれ自身で設定します。

+0

最初( "4"、 "2"、 "5"、 "67")、最初ではありません(4,2,5,67) –

+0

true。一つの理由から、私は整数について考えていました。 –

13

varags。メソッドシグネチャがmethod(Param param, String... x)の場合は、オブジェクトタイプがParam、いずれも個のStringオブジェクトが必要です。

カップルはそれについてのクールなもの場合があります。

  1. それは特別な何もありません。それは単なる甘い配列です。したがって、method(MyObject... o)method(MyObject[] o)と同じです。

  2. Vararg は、の引数リストの最後のパラメータである必要があります。

  3. 私に一度噛み砕くこの面白いことがあります。 method(MyObject... o)は、コンパイルエラーなしでmethod()と呼び出すことができます。 Javaは内部的にno-arg呼び出しをmethod(new MyObject[0])に変換します。だから、これに気をつけてください。

1

可変長の引数です。メソッド本体ではString []として扱いますが、メソッドを呼び出すときにString []を指定するか、単に値を列挙することができます。

void foo(String... blah) { } 

void bar() { 
    String[] a = { "hello", "world" }; 
    foo(a); // call with String[] 
    foo("hello", "world"); // or simply enumerate items 
} 

0

Stringは、文字列型であるJavaの5で導入されました。 String[]は文字列の配列です。

String ...は、Java 1.5で導入されたCから抜粋された省略形の構文砂糖です。メソッド定義で使用でき、実際には1つの違いだけの配列と同じです。 方法は次のように定義されている場合:

public void foo(String[] arg){}

あなたがそれに配列を渡す必要があります。

public void foo(String arg){}

あなたが呼び出すことができます。

foo(new String[] {"a", "b"});

方法は、以下のように定義されている場合どちらか

foo(new String[] {"a", "b"});

または

foo("a", "b");

関連する問題