2011-08-30 16 views
33

W ramach wiosennej stosuje się metody, w których można przekazywać dowolną liczbę argumentów.Metoda Java z nieograniczoną liczbą argumentów

Chciałbym napisać funkcję, która może również pobrać nieograniczoną ilość danych. W jaki sposób ta funkcja jest wywoływana, aby móc ją przeczytać? Lub jak mogę to zdefiniować?

Dziękuję bardzo.

+0

która klasa ma tę metodę? Może jest jak static main (String [] args). – jjchiw

+0

Zdefiniuj "nieograniczoną ilość danych". – pap

Odpowiedz

93

Nazywa się varargs.

Pozwala to na zastosowanie dowolnej liczby argumentów. Są one dostępne w postaci tablicy w metodzie:

public void foo(String... args) { 
    for (String arg : args) { 
     // do smth with arg. 
    } 
} 

To syntactic sugar. Kompilator ukrywa tworzenie tablicy, więc zamiast

bar.foo(new String[] {"1", "2", "3"}); 

piszesz

bar.foo("1", "2", "3"); 
4

Aby dodać odpowiedź na Bozho, możesz mieć również inne argumenty w swojej metodzie przed varargs:

// foo(13, "foo", "bar", "baz"); 
// will print: 
// 13 - |foo||bar||baz| 
public void foo(int a, String... b) { 
    System.out.println(a + " - "); 

    for (String c : b) { 
     System.out.print("|" + c + "|"); 
    } 
} 

Po tym nie można mieć argumentów innego typu. Te nie działają:

public void bar(String... b, int b); 
public void foo(int a, String... b, int b); 
Powiązane problemy