2012-03-15 14 views
6

Duplicar posible:
varargs and the '…' argument
Java, 3 dots in parameters¿Qué es "String ..." en java?

vi esta definición en mi archivo de java androide. Se parece a String []. ¿Son diferentes? Gracias.

+10

http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html – assylias

+0

y http: // stackoverflow. com/questions/1656901/varargs-and-the-argument – assylias

+0

... o cualquier buen libro de texto de Java escrito en los últimos 5 años más o menos. –

Respuesta

5

Es sintaxis para escribir los artículos de la matriz como un parámetro

por ejemplo:

public String first (String... values) { 
    return values[0]; 
} 

A continuación, se puede llamar a este método con first("4","2","5","67")

El javacompiler creará una matriz de la parámetros por sí mismo.

+0

primero ("4", "2", "5", "67"), no el primero (4,2,5,67) –

+0

verdadero. Por una razón, estaba pensando en enteros. –

13

varags. Si la firma de un método es method(Param param, String... x), tomará un tipo de objeto Param y cualquier número de objetos String.

Hay mayor si las cosas interesantes acerca de que:

  1. No es nada especial. Es solo matriz azucarada. Entonces, method(MyObject... o) es lo mismo que method(MyObject[] o).

  2. Vararg tiene que ser el último parámetro en la lista de argumentos.

  3. Hay esta cosa graciosa que me mordió una vez. method(MyObject... o) se puede llamar como method() sin ningún error de compilación. Java convertirá internamente la llamada no-arg al method(new MyObject[0]). Por lo tanto, ten en cuenta esto.

1

Es un vararg, número variable de argumentos. En el cuerpo del método lo tratas como un String [], pero cuando llamas al método, puedes elegir suministrar un String [] o simplemente enumerar tus valores.

void foo(String... blah) { } 

void bar() { 
    String[] a = { "hello", "world" }; 
    foo(a); // call with String[] 
    foo("hello", "world"); // or simply enumerate items 
} 

se introdujo con Java 5.

0

String es un tipo de cadena. String[] es una matriz de cadenas.

String ... es un azúcar sintáctico llamado ellipsis, introducido en java 1.5 y tomado de C. Se puede utilizar en las definiciones de métodos y realmente igual que una matriz con una sola diferencia. Si se define el método como:

public void foo(String[] arg){}

debe pasar matriz a la misma:

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

Si el método se define como:

public void foo(String arg){}

Puede llamar Tampoco

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

o

foo("a", "b");