Metody o zmiennej liczbie argumentów

Po poprzednich wpisach dzisiaj coś lekkiego :) Poznamy metody, które mogą mieć zmienną liczbę argumentów (ang. varargs). Przed Javą 1.5 (inaczej zwaną 5.0) jedyną możliwością przesłania do metody zmiennej liczby argumentów było wykorzystanie tablic, w Javie 5.0 wprowadzono nowy sposób zapisu argumentu: Typ... Przykładowy nagłówek metody o zmiennej liczbie argumentów:
public static void metoda(String napis, String... napisy);

Argument o zmiennej liczbie danych musi występować zawsze jako ostatni na liście argumentów metody. Trzy kropki oznaczają, że argument może zostać przekazany jako tablica albo lista wartości oddzielonych przecinkami. Jeżeli wykorzystany wartości oddzielone od siebie przecinkami, to kompilator Javy automatycznie skonwertuje je do postaci tablicy i prześle do metody. Dostęp do poszczególnych argumentów jest możliwy za pomocą na przykład pętli iteracyjnej czy też zwykłego dostępu do elementów tablicy (np. rozmiar takiej tablicy - pole length). Poniżej przykładowa aplikacja zawierająca metodę wykorzystującą zmienną liczbę argumentów.
/**
 * Zmienna liczba argumentów w metodzie
 * @author kodatnik.blogspot.com
 */
public class ZmiennaLiczbaArgumentow {
 
 // ostatni argument metody może mieć zmienną liczbę danych
 public static void wyswietl(String napis, String... napisy) {
  
  // wyświetlamy pierwszy argument
  System.out.println (napis);

  // wyświetlamy liczbę argumentów przekazanych jako drugi parametr
  System.out.println ("Liczba zmiennych argumentów: " + napisy.length);

  // w pętli iteracyjnej wyświetlamy poszczególne elementy
  for (String lancuch : napisy) {
   System.out.println (lancuch);
  }
 }
 
 public static void main (String[] args) {
  // tworzymy tablicę łańcuchów znaków
  String[] lancuchy = {"Kasia", "Romek", "Andrzej", "Ola", "Tadeusz"};
  
  // wywołujemy metodę wyświetl z 4 argumentami
  wyswietl("Koleżanki", "Ania", "Ola", "Iwona");
  // wywołujemy metodę wyświetl z 2 argumentami
  wyswietl("Kolega", "Wiktor");
  // wywołujemy metodę wyświetl z 5 argumentami
  wyswietl("Znajomi", "Ania", "Ola", "Iwona", "Leszek");
  
  // wywołujemy metodę wyświetl z 2 argumentami
  // drugi argument jest tablicą z łańcuchami tekstowymi
  wyswietl("Pracownicy", lancuchy);
 }
}
Uruchomiona aplikacja:
Koleżanki
Liczba zmiennych argumentów: 3
Ania
Ola
Iwona
Kolega
Liczba zmiennych argumentów: 1
Wiktor
Znajomi
Liczba zmiennych argumentów: 4
Ania
Ola
Iwona
Leszek
Pracownicy
Liczba zmiennych argumentów: 5
Kasia
Romek
Andrzej
Ola
Tadeusz
Musimy pamiętać, że zamiana przez kompilator argumentów na tablicę pozbawia nas możliwości przeciążenia powyższej metody na taką:
public static void wyswietl(String napis, String[] napisy);
A co się stanie jeśli zdefiniujemy naszą metodę w ten sposób:
public static void wyswietl(String napis1, String napis2);
Która wersja metody zostanie wywołana dla takiego kodu?
wyswietl("Marek", "Wiktor");
Metoda wyswietl(String, String) jest bardziej wyspecjalizowana (inaczej mówiąc szczegółowa), więc ona zostanie wywołana domyślnie.

2 Komentarze - Metody o zmiennej liczbie argumentów

Anonimowy pisze...

Dzięki za ten wpis - rozjaśniło mi to pogląd na to zagadnienie :).

Anonimowy pisze...

Dziękuje Bardzo :)

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty