J'obtiens une réponse JSON qui ressemble approximativement à ceci.
{
"status": "success",
"data": [
{
....
}
]
}
Le champ status
peut avoir deux valeurs: succès ou échec .
Donc, dans mon code, j'ai l'énumération suivante.
private enum Status {
SUCCESS("success", 0),
FAIL("fail", 1);
private String stringValue;
private int intValue;
private Status(String toString, int value) {
stringValue = toString;
intValue = value;
}
@Override
public String toString() {
return stringValue;
}
}
Ce que je veux faire, c'est dans une instruction switch, je dois vérifier la valeur d'état et exécuter le code dans chaque condition.
String status = jsonObj.getString("status");
switch (status) {
case Status.SUCCESS.toString():
Log.d(LOG_TAG, "Response is successful!");
case Status.FAIL.toString():
Log.d(LOG_TAG, "Response failed :(");
default:
return;
}
Mais j'obtiens l'erreur expression constante requise dans chaque cas.
J'ai vérifié la valeur renvoyée par Status.SUCCESS.toString()
et Status.FAIL.toString()
qui retournent en effet des chaînes.
Une idée pourquoi cette erreur se produit toujours?
Les instructions case
doivent être évaluables à la compilation.
Quelque chose comme Status.SUCCESS.toString()
ne satisfait pas cela. Une chaîne littérale, d'autre part, fait.
La solution évidente consiste à utiliser un bloc if
.