2010-11-14 12 views
6

Quiero pasar un número diferente de cadenas a una función en java, se supone que son las cadenas para filtrar una consulta, podría ser 2 -4 cuerdas.¿Cuál es la mejor forma de pasar un número desconocido de cadenas a una función en java

¿Cuál crees que será la mejor manera de hacerlo?

a) creando una sobrecarga para la misma función con diferente número de parámetros? b) crea una nueva instancia de una matriz de cadena y la pasa a la función?

cualquier otra forma preferida?

gracias

Respuesta

11

Java ha apoyado lista de argumentos desde 1.5:

public void myMethod(String... values) 
{ 
    for (String val : values) 
    { 
     // do something 
    } 
} 

Las reglas son simples:

  • El argumento variable debe ser el último argumento en la firma del método.
  • Es un solo argumento, por lo que todos los valores serán del mismo tipo.
  • Dentro del método, el vararg parece ser una matriz.
  • Al llamar al método, puede pasar valores individuales o una matriz.
+0

Genial, gracias! ¿Necesita pasar al menos un parámetro o existe la posibilidad de que la matriz esté vacía? –

+1

@Doron: no, obtendrás una matriz vacía si no pasas ningún argumento. – Anon

+0

Gracias por aclararlo –

0

Crear una sobrecarga (a) tiene la ventaja de que obtendrá un error en tiempo de compilación si pasa un número incorrecto de cadenas.

Como alternativa, puede usar varargs.

+1

¿No cree que será un desperdicio de código, escribiendo la misma función 3 veces? –

+0

@Doron Sinai: dos de ellos pueden ser triviales, p. pasando nulos en lugar de los argumentos faltantes. Esto es similar al patrón de constructor telescópico que tiene sus ventajas y desventajas. – vitaut

Cuestiones relacionadas