Tri*_*gan 2 java enums android switch-statement
我在Android Studio中为Android做了一些编码,我有一个带有私有枚举的类TaskType,我用getTaskType提取,如下面的代码所示:
public class TaskType {
public enum taskType {NOT_SET, LOGIN_TASK, GET_USER_DETAILS_TASK}
private taskType theTaskType= taskType.NOT_SET;
public TaskType(taskType taskType){
this.theTaskType= taskType;
}
public taskType getTaskType() {
return theTaskType;
}
public void setTaskType(taskType newTaskType) {
theTaskType = newTaskType;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将一个实例作为参数传递给回调并尝试打开它,如下面的代码所示:
public void callbackOnPostExecute(TaskType taskType){
switch(taskType.getTaskType()){
case LOGIN_TASK:
mListener.callback(loginNetworkHelper);
default:
Log.e(TAG, "Unknown task type: " + taskType.getTaskType());
error.setError(ErrorHelper.error.UNKNOWN_ERROR);
mListener.callback(new NetworkHelper(error));
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎编译得很好,Android Studio甚至突出显示LOGIN_TASK紫色,就好像它知道它是什么.但是,开关直接用于默认情况,我的Log.e语句具有输出:
03-24 07:23:43.870 2636-2636/com.mydomain.myproject E/NetworkInterface? Unknown task type: LOGIN_TASK
Run Code Online (Sandbox Code Playgroud)
这使得它看起来好像正在使用正确的枚举值,但由于某种原因,LOGIN_TASK情况无法识别.
我已经在这个问题上做了很多搜索,但是我所能提到的是关于如何在Java中开启枚举的教程,我想我已经遵循了.有没有人有任何意见?
谢谢!
你忘了break在你的case条款中添加声明:
case LOGIN_TASK:
mListener.callback(loginNetworkHelper);
break;
default:
Log.e(TAG, "Unknown task type: " + taskType.getTaskType());
error.setError(ErrorHelper.error.UNKNOWN_ERROR);
mListener.callback(new NetworkHelper(error));
Run Code Online (Sandbox Code Playgroud)
如果你没有结束case,那么break switch将调用case 包括分支在内的所有default分支.switch声明文档可在此处找到.