Java で変数引数を持つメソッドに配列を引数として渡すことができますか?
次のメソッドを検討してください:
class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } }
意図は、引数が個別に String.format に渡されることですが、 myFormat は引数を Object[] として扱います。これは目標と競合します。
Java の Varargs (変数引数)
Java の糖衣構文 T... は T[] に対応します。 。 Java 言語仕様 (JLS 8.4.1) によると、最後の仮パラメータは変数 arity であり、指定された型の配列と見なされます。したがって、可変引数メソッドは可変数の引数を受け入れます。このようなメソッドの呼び出しには、仮パラメータよりも多くの実引数を含めることができます。
解決策
目的の動作を実現するには、可変引数を使用して配列をメソッドに渡すことができます。基礎となる原則は、配列内のすべてのオブジェクトが個別の引数として渡されるということです。
これを示す例は次のとおりです。
public static String ezFormat(Object... args) { String format = new String(new char[args.length]) .replace("", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
String... であることに注意してください。 String[].
可変引数と同等注意事項
以上がJava の変数引数 (Varargs) は配列を引数として受け入れることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。