2013-07-30 4 views
10

Ich habe den folgenden CodeJava und effizienteste Weg, String-Array als Methodenparameter übergeben

String[] args = {"a", "b", "c"}; 
method(args); 


private void method(String[] args){ 
    return args; 
} 

Warum kann ich die folgenden ohne Fehler nicht tun?

method({"a", "b", "c"}); 

Dieser Code ist Beispiel, nur um den Punkt zu beweisen, nicht die tatsächlichen Methoden, die ich verwende. Ich möchte stattdessen die zweite Methode ausführen, um meinen Code zu bereinigen und zu vermeiden, ein Dutzend verschiedener Arrays zu deklarieren, wenn ich sie nur einmal verwende, um sie an meine Methode zu übergeben.

Der Kern der Frage ist, was ist der effizienteste Weg, ein Array von Strings als Methode Parameter übergeben.

+1

möglich Duplikat von [Warum die Weitergabe von {a, b, c} an eine Methode nicht funktioniert?] (Http://stackoverflow.com/questions/1017486/why-passing-abc-to-a-method- doesnt-work) Siehe auch [Java: Array-Initialisierungssyntax] (http://stackoverflow.com/questions/5387643/java-array-initialization-syntax) und insbesondere [Warum Array-Konstanten nur in Initialisierern verwendet werden können?] (http: // stackoverflow.com/questions/5387643/java-array-initialization-syntax) : //stackoverflow.com/q/10520617/139010) –

+0

Bearbeitete Frage, und neu definiert Ziel der Antwort genauer zu sein über die effizienteste Art und Weise Array als Parameter zu übergeben, vorausgesetzt Links diskutieren nicht Varargs, daher sollte Frage nicht mehr berücksichtigt werden Duplikat. –

+0

Übrigens erwähnt Ihre bearbeitete Frage _still_ Varargs nicht. –

Antwort

6

Ich vermute, dass Sie Varargs verwenden möchten. Sie müssen nicht einmal ein Array erstellen, um Argumente mit variabler Länge zu senden.

String[] strings = method("a", "b", "c"); 

private String[] method(String... args){ 
    return args; 
} 

oder

String[] strings = array("a", "b", "c"); 

private <T> T[] array(T... args){ 
    return args; 
} 

oder wenn Sie weitere

String[] strings = array("a, b, c"); 

private String[] array(String args){ 
    return args.split(", ?"); 
} 
+0

Gibt es 3 "." nach String, weil ich 3 Strings hatte? –

+1

Und muss ein Varargs-Parameter der letzte Parameter einer Methode sein? Dies ist Neugier, da in der ursprünglichen Frage nicht abgedeckt. –

+1

Nein, die Anzahl der Perioden hat nichts mit der Anzahl der Strings zu tun. Es ist die Syntax für Varargs. Und ja, der Varargs-Parameter muss der letzte sein. – Kayaman

16

versuchen

method(new String[]{ "a", "b", "c"}); 

auf diese Weise das System weiß, es ist eine neue String-Array ist.

java ist nicht wie PHP;)

2

Sie keine benannte Referenz auf das Array benötigen. Sie können ein anonymes Array wie folgt initialisieren und übergeben:

method (new String[]{"a", "b"}); 
6

kondensieren möchten Wenn Sie verwenden:

method({ "a", "b", "c"}); 

dann java keine Ahnung hat, ob Sie ein Array wollen von String oder von Object. Sie können explizit Java sagen, welche Art von Array es so ist:

method(new String[] { "a", "b", "c"}); 

auf diese Weise Java sagen können, dass Sie eine Reihe von String bedeuten.

Verwandte Themen