ホームページ >Java >&#&チュートリアル >変数引数を持つ Java メソッドは配列を複数の引数として受け入れることができますか?
Java で変数引数を持つメソッドに引数を配列として渡すことができますか?
次の目的の関数を考えてみましょう:
class A { private String extraVar; public String myFormat(String format, Object ... args) { return String.format(format, extraVar, args); } }
このシナリオでは、args は myFormat 内の Object[] として解釈されます。メソッドを使用すると、単一の引数が String.format に提供されます。ただし、目的は、引数内の各オブジェクトを個別の引数として渡すことです。
可能ですか?
はい、T... であるため、可能です。 T[] の単なる糖衣構文。
Java 言語仕様 (JLS) 8.4.1定義:
リストの最後の仮パラメータは特別です。これは、型に続く省略記号によって示される、変数アリティ パラメータである可能性があります。
最後の仮パラメータがタイプ T の可変アリティ パラメータである場合、それは仮パラメータを定義しているとみなされます。型 T[].
変数 Arity を示す例パラメータ:
public static String ezFormat(Object... args) { String format = new String(new char[args.length]) .replace("<pre class="brush:php;toolbar:false">static void count(Object... objs) { System.out.println(objs.length); } count(null, null, null); // prints "3" count(null, null); // prints "2" count(null); // throws NullPointerException!!!", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
main メソッドでは、args は ezFormat に渡される String[] です。このメソッドは共分散のため、これを Object[] として扱います。
可変引数の注意点:
null を渡す
int[] myNumbers = { 1, 2, 3 }; System.out.println(ezFormat(myNumbers)); // prints "[ [I@13c5982 ]"
これを回避するには、Object[] { null } または (Object) を使用して呼び出します。 null.
配列への追加の引数の追加
プリミティブ型の配列を渡すには、それを参照配列でラップします。
Integer[] myNumbers = { 1, 2, 3 }; System.out.println(ezFormat(myNumbers)); // prints "[ 1 ][ 2 ][ 3 ]"
以上が変数引数を持つ Java メソッドは配列を複数の引数として受け入れることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。