この構文は次の場合に役立ちます:
function(String... args)
これは書くことと同じですか?
function(String[] args)
このメソッドを呼び出している間だけ違いがありますか、それとも他の機能が関係していますか?
この構文は次の場合に役立ちます:
function(String... args)
これは書くことと同じですか?
function(String[] args)
このメソッドを呼び出している間だけ違いがありますか、それとも他の機能が関係していますか?
2 つの唯一の違いは、関数を呼び出す方法です。String var args を使用すると、配列の作成を省略できます。
public static void main(String[] args) {
callMe1(new String[] {"a", "b", "c"});
callMe2("a", "b", "c");
// You can also do this
// callMe2(new String[] {"a", "b", "c"});
}
public static void callMe1(String[] args) {
System.out.println(args.getClass() == String[].class);
for (String s : args) {
System.out.println(s);
}
}
public static void callMe2(String... args) {
System.out.println(args.getClass() == String[].class);
for (String s : args) {
System.out.println(s);
}
}
違いは、メソッドを呼び出すときだけです。2 番目のフォームは配列で呼び出す必要があり、最初のフォームは配列で呼び出すことができます (2 番目のフォームと同様、はい、これは Java 標準に従って有効です) または文字列のリスト (コンマで区切られた複数の文字列) で呼び出すことができます。引数はまったくありません (2 番目の引数には必ず引数が必要で、少なくとも null を渡す必要があります)。
構文的に砂糖です。実際にコンパイラは
function(s1, s2, s3);
の中へ
function(new String[] { s1, s2, s3 });
初めの。
varargs ( String...
) を使用すると、次の方法でメソッドを呼び出すことができます。
function(arg1);
function(arg1, arg2);
function(arg1, arg2, arg3);
String[]
配列 ( )でそれを行うことはできません
最初の関数を次のように呼び出します。
function(arg1, arg2, arg3);
2番目のもの:
String [] args = new String[3];
args[0] = "";
args[1] = "";
args[2] = "";
function(args);
レシーバーのサイズでは、文字列の配列を取得します。違いは呼び出し側だけです。
class StringArray1
{
public static void main(String[] args) {
callMe1(new String[] {"a", "b", "c"});
callMe2(1,"a", "b", "c");
callMe2(2);
// You can also do this
// callMe2(3, new String[] {"a", "b", "c"});
}
public static void callMe1(String[] args) {
System.out.println(args.getClass() == String[].class);
for (String s : args) {
System.out.println(s);
}
}
public static void callMe2(int i,String... args) {
System.out.println(args.getClass() == String[].class);
for (String s : args) {
System.out.println(s);
}
}
}