Java変数パラメータ一覧
class A {}
すべてのクラスはObjectを継承しているため、Object配列をパラメータとして取れるメソッド:
public class parameter { static void printArray(Object[] args){ for(Object obj : args){ System.out.print(obj + " "); } System.out.println(); } public static void main(String[] args){ printArray(new Object[] { new Integer(47), new Float(3.14), new Double(11.11) }); printArray(new Object[]{"one", "two", "there"}); printArray(new Object[]{new A(), new A(), new A()}); } }
機能が追加されたJava SE5以降のバージョンの場合は、次のように記述できます:
public class parameter { public static void printArray(Object... args){ for(Object obj : args){ System.out.print(obj + " "); } System.out.println(); } public static void main(String[] args){ printArray(new Integer(47), new Float(3.14), new Double(11.11)); printArray(47, 3.14F, 11.11); printArray("one", "two", "three"); printArray(new A(), new A(), new A()); printArray((Object[]) new Integer[]{1, 2, 3, 4}); printArray(); } }
オブジェクトが考えるパラメータリストを使用できます:
public class VarargType{ static void f(Character... args){ System.out.print(args.getClass()); System.out.println(" length " + args.length); } static void g(int... args){ System.out.print(args.getClass()); System.out.println(" length " + args.length); } public static void main(String[] args){ f('a'); f(); g(1); g(); System.out.println(" int [] " + new int[0].getClass()); } }
これはJava 5で導入された機能です。メソッドが受け取るパラメータの数が不確実な場合、この機能は役に立ちます。
たとえば、IO 操作が関係する場合、入力と出力の少なくとも 2 つのストリームを閉じる必要があります。これにより、ストリームを閉じる操作を次のメソッドにカプセル化して、1 回の呼び出しで複数のストリームを閉じることができます。
public static void closeSilent(Closeable... closeables) { for (Closeable closeable : closeables) { if (closeable != null) { try { closeable.close(); } catch (IOException ignored) { } } } }
この機能が使用に適していると思われる唯一の場所です。次の特徴があります:
これらのパラメータは同じタイプです
パラメータの数は不確かで、それぞれはオプションです。これらのパラメータの目的はすべて同じです。たとえば、上記はすべて実行シャットダウンです。
Java 可変長パラメーター リストは、メソッド パラメーター リストの最後にのみ配置できます。
Java可変長パラメータリストの実装