вторник, 5 август 2008 г.

Method with a variable number of arguments in Java (varargs methods) / Методи с променлив брой аргументи


Струва ми се, че не е много известно, но Java има способността да работи с променлив брой аргументи подадени на някой метод. Това се постига с използването на оператора "..." в мястото за аргументите на декларацията на метода.
Преди JDK 5.0, ако искаме да подадем променлив брой аргументи на някой метод, трябва да подадем например масив от обекти или списък с обекти.

JDK 5.0 добавя свойството varargs, което е доста по-гъвкаво. vararg трябва да бъде последният аргумент в списъка с аргументи.

Нека илюстрираме използването на varargs с един обикновен HelloWorld пример:

public class Varargs {

public static void main(String args[]) {
myMethod("Hello");

System.out.println();

myMethod("Hello", "again", "world!");
}

public static void myMethod(Object ... args) {
System.out.println("You have passed in " + args.length + " arguments ");
for (Object o : args) {
System.out.println(o);
}
}
}

Как работи?
Няма от какво да се притесняваме, дефакто компилатора генерира съсщия код, какъвто би се получил при използването на обикновения масив Object[]{}.
Къде се използва?
Естествено, varargs се използва в стандартната Java библиотека:
-
Collections.addAll позволява да се добавя масив в колекция или произволно число елементи, зададени поотделно.
- PrintStream.printf позволява да се извеждат форматирани резултати, както в С++.
Предполагам, че се използва и на други места:)
За какво ни е цялата тази гимнастика?
Така може да се спести малко време за писане на
Object[]{} и да се подобри читаемостта на кода.

Няма коментари: