2011-10-29 17 views
8

È possibile passare un nuovo array come metodo e disporre ancora di dati in tale array?Array Java come parametri

Ad esempio, ho questo metodo: foo(String[]) e voglio chiamarlo in questo modo foo(new String[] s = {"String1", "String2"}). Ma quello non è Java valido.

risposta

18

si tratta di una "via Java valida" (come in, si compila e fa ciò che si vuole):

foo(new String[] {"String1", "String2"}); 

Se avete la possibilità di cambiare questo metodo, allora si può anche considerare di cambiare il metodo di prendere un argomento varargs:

public void foo(String... strings) { 
    // ... 
} 

quindi è possibile utilizzare come segue, senza la necessità di creare esplicitamente un array:

foo("String1", "String2"); 

Quello che segue è quindi valido anche :

foo("String1"); 

e

foo("String1", "String2", "String3"); 

e altro ancora.

+0

come ottenere il vaue allora? –

4

Se si sta tentando di creare una variabile locale s e di mantenerla in giro, no, non è possibile dichiarare una variabile all'interno di una chiamata di metodo. Bisogna dichiararla primo al di fuori della chiamata:

String[] s = {"String1", "String2"}; 
foo(s); 

Si potrebbe inizializzare s all'interno della chiamata, ma non vedo alcun motivo per farlo, più esso sembra davvero male:

String[] s; 
foo(s = new String[] {"String1", "String2"}); 
1

Se si desidera passare solo il valore e non è necessario più la variabile s, fare in questo modo:

foo(new String[] {"String1", "String2"}); 
0

Non si può dichiarare una variabile, ma si può passare un array:

foo(new String[] { "String1", "String2" }); 

Se si desidera fare riferimento allo stesso array in un secondo momento, è necessario dichiararlo prima della chiamata.

0

Si può solo fare foo (new String [] { "String1", "String2"})