2016-04-03 9 views
-1

Lassen Sie uns sagen, dass ich die folgenden 2 Funktionen:Überlastung mit Einzel Arg- und varargs

public foo(String str){ 
    System.out.println(str); 
} 

public foo(String... str){ 
    System.out.println("varargs"); 
    for(String s: str){ 
     System.out.println(s); 
    } 
} 

Wird es kompilieren? Wenn es welcher foo wird mit foo ("hi") aufgerufen werden?

+0

Es gibt einen einfachen Weg, das herauszufinden. –

+4

Wenn es nur eine Art der Überprüfung gibt – Reimeus

+4

Ich stimme für das Schließen dieser Frage als Off-Topic, weil das Drücken der "Ausführen" -Schaltfläche Ihre erste Vorgehensweise sein sollte. –

Antwort

2

Wird es kompilieren?

Nein. Weil beide Methoden keinen Rückgabetyp haben.

Wenn Sie setzen ihn auf void:

public void foo(String str){ 
    System.out.println(str); 
} 

public void foo(String... str){ 
    System.out.println("varargs"); 
    for(String s: str){ 
     System.out.println(s); 
    } 
} 

dann wird es kompilieren.

Wenn es wird welche foo wird mit foo("hi") aufgerufen werden?

Die foo(String str) Methode wird aufgerufen und Sie können es leicht überprüfen.