2011-05-21 16 views

Respuesta

47

Java tiene una construcción equivalente:

import java.util.Arrays; 

public class Foo { 
    public void method(String[] myStrArray) { 
     System.out.println(Arrays.toString(myStrArray)); 
    } 

    public static void main(String[] args) { 
     Foo foo = new Foo(); 
     foo.method(new String[]{"hello", "goodbye"}); // **array created inline** 
    } 
} 
+0

Sí, esto era exactamente lo que quería lograr. ¡Gracias! – aksamit

+0

@aksamit: ¡De nada! –

+0

+1. Vea mi respuesta sobre cómo deshacerse de esa anotación de tipo extraño. – missingfaktor

1

Sin

Pero tenemos clase anónima.

foo(new Runnable(){public void run(){}}); 
+0

seguro que puede crear matrices en línea en Java (como se demuestra por @ aerodeslizador y mi propia respuesta). En cuanto al bit de clase anónimo, ¿cómo es eso relevante para la pregunta? – missingfaktor

+0

@missing lo que OP quiere es default arg. no como arg en el método llame al –

+1

@Jigar: No lo creo. Vea su comentario bajo la respuesta de @ Hovercraft. Parece haber malinterpretado la pregunta. Lo arreglaré. – missingfaktor

4

Java tiene varargs métodos:

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

Puede llamar a un método de este tipo con cero a n parámetros, el compilador crea una matriz a partir de los parámetros, por ejemplo, El método es equivalente a esta Firma:

public void foo(String[] args) 
+0

Gracias, muy limpio. – aksamit

5

@ respuesta de aerodeslizador muestra cómo crear una línea matriz en Java.

Puede mejorar aún más esa solución utilizando un método de utilidad (uno que utiliza la inferencia de tipo limitada de Java) para deshacerse de la anotación de tipo de matriz redundante.

Código:

import java.util.Arrays; 

// Utility class 
class Array { 
    public static <A> A[] of(A ... elements) { 
    return elements; 
    } 
} 

// Main class 
class Main { 
    public static void method(String[] s) { 
    System.out.println(Arrays.toString(s)); 
    } 

    public static void main(String[] args) { 
    method(Array.of("a", "b", "c")); 
    } 
} 
+2

Nunca había visto esto antes. Gracias por la educación! –

+0

@Hovercraft: De nada. :-) – missingfaktor

Cuestiones relacionadas