2011-04-07 13 views
12

función AndroidAndroid: Cómo establecer un valor predeterminado para un argumento variable de

ejemplo PHP:

function HaHa($a = "Test") { print $a; }

La pregunta es cómo hacerlo en Android ...

public void someFunction(int ttt = 5) 
{ 
    // something 
} 

La solución anterior no funciona, ¿cómo puedo hacerlo?

Gracias!

+0

No creo que podamos hacer eso en Java. y puedo adivinar, si mal no recuerdo, que esta es una característica que se supone que está en Java 7. Entonces, en este caso, uno puede verificar que la variable 'ttt' sea nula, y si es nula , asigne un valor a esto. –

+1

Relacionados: [¿Java admite valores de parámetros predeterminados?] (Http://stackoverflow.com/questions/997482/does-java-support-default-parameter-values) – eldarerathis

+0

Posible duplicado de [Parámetros opcionales de Java] (http://stackoverflow.com/questions/965690/java-optional-parameters) –

Respuesta

10

No, Java no admite valores predeterminados para los parámetros de función. Hay una publicación interesante sobre las funciones del idioma de préstamo aquí: http://java.dzone.com/news/default-argument-values-java

+0

Creo que sí, pero las funciones nativas lo soportan de alguna manera ... No puedo recordar uno ...O por ejemplo JSONArray se puede construir desde diferentes fuentes: String, JSONTokener x, Colección de colección o en blanco ... Pensé que podría haber trabajo alrededor de –

+0

Bueno, trabajar para mí es poner String [] dentro y puede agregar o quitar argumentos. .. –

+0

En este artículo es una gran solución ... ¡Gracias! –

0

Java no admite una sintaxis que hará lo que usted desee.

Tal vez al comienzo de algunaFuncion (int), sólo podía comprobar el valor de entrada, y asignar un valor diferente si no te gusta lo que viene en.

if (ttt == 0) ttt = 5;

Tenga en cuenta esta cuestión parece no tienen nada que ver con Android, por lo que está etiquetado incorrectamente.

9

Puede abusar de la sobrecarga de esta manera:

int someMethod() { return someMethod(42); } 
int someMethod(int arg) { .... } 
5

No hay necesidad de sobrecargar nada, acaba de escribir:

public int getScore(int score, Integer... bonus) 
{ 
    if(bonus.length > 0) 
    { 
     return score + bonus[0]; 
    } 
    else 
    { 
     return score; 
    } 
} 
+0

Creo que esto es mejor. Se puede simplificar, como 'return bonus.length> 0? puntaje + bonificación [0]: puntaje; ' – Sithu

1

Puede utilizar la sobrecarga de una función. La sobrecarga también está bien, pero en caso de que necesite valores predeterminados para múltiples argumentos, terminará creando muchos métodos con todas las combinaciones posibles de argumentos predeterminados, para el ejemplo que utiliza imagine que desea tener un valor predeterminado para los 3 argumentos. el resultado final será con este

public void methodA(A arg1) { } 
public void methodA(B arg2,) { } 
public void methodA(C arg3) { } 
public void methodA(A arg1, B arg2) { } 
public void methodA(A arg1, C arg3) { } 
public void methodA(B arg2, C arg3) { } 
public void methodA(A arg1, B arg2, C arg3) { } 

Así que aquí está el truco que hice para mí, también se puede utilizar

public static void main(String[] args) 
{ 
    defaultParameter(); 
    defaultParameter(true); 
} 

public static void defaultParameter(Boolean ...gender) 
{ 
    boolean genderBoolean = false; // It the default value you want to give 
    if(gender.length == 1) 
    { 
     genderBoolean = gender[0]; // Overrided Value 
    } 
    System.out.println(genderBoolean); 
} 

El código anterior genrate resultado

false 
true 

me entero de aquí el ejemplo java-default-parameter-values

2

Haga esto (con 3 puntos):

public void doSomething(boolean... arg1) { 
    boolean MyArg1= (arg1.length >= 1) ? arg1: false; 
} 
Cuestiones relacionadas