Isu*_*uru 7 java string enums android switch-statement
我得到一个大致看起来像这样的JSON响应.
{
"status": "success",
"data": [
{
....
}
]
}
Run Code Online (Sandbox Code Playgroud)
该status字段可以有两个值:成功或失败.
所以在我的代码中,我有以下枚举.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在switch语句中,我需要检查状态值并在每个条件下执行代码.
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;
}
Run Code Online (Sandbox Code Playgroud)
但是我在每种情况下都得到Constant expression required错误.
我检查返回的值Status.SUCCESS.toString()和Status.FAIL.toString()这的确返回字符串.
知道为什么还会出现这个错误吗?
Bat*_*eba 20
case 语句必须是编译时可评估的.
有点像Status.SUCCESS.toString()不满足的东西.另一方面,字符串文字也是如此.
显而易见的解决方法是使用一个if块.
| 归档时间: |
|
| 查看次数: |
26028 次 |
| 最近记录: |