在我的程序中,我有两个类似的“else”(返回 null),我想将它们组合起来
public Task taskFromString(String taskString) {
String[] splitTaskString = taskString.split(",");
if (splitTaskString.length > 1) {
if (TypeOfTask.valueOf(splitTaskString[1]) == TypeOfTask.SUBTASK) {
return new Subtask(splitTaskString[2], splitTaskString[4],
Status.valueOf(splitTaskString[3]), TypeOfTask.valueOf(splitTaskString[1]),
Integer.parseInt(splitTaskString[5]));
} else if (TypeOfTask.valueOf(splitTaskString[1]) == TypeOfTask.TASK) {
return new Task(splitTaskString[2], splitTaskString[4],
Status.valueOf(splitTaskString[3]), TypeOfTask.valueOf(splitTaskString[1]));
} else if (TypeOfTask.valueOf(splitTaskString[1]) == TypeOfTask.EPIC) {
return new Epic(splitTaskString[2], splitTaskString[4],
Status.valueOf(splitTaskString[3]), TypeOfTask.valueOf(splitTaskString[1]));
} else {
return null;
}
} else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
唯一想到的是使用逻辑运算将它们组合在第一个“if”中,但我不确定这是最佳方式
删除两者并通过。喜欢,
String[] splitTaskString = taskString.split(",");
if (splitTaskString.length > 1) {
if (TypeOfTask.valueOf(splitTaskString[1]) == TypeOfTask.SUBTASK) {
return new Subtask(splitTaskString[2], splitTaskString[4],
Status.valueOf(splitTaskString[3]), TypeOfTask.valueOf(splitTaskString[1]),
Integer.parseInt(splitTaskString[5]));
} else if (TypeOfTask.valueOf(splitTaskString[1]) == TypeOfTask.TASK) {
return new Task(splitTaskString[2], splitTaskString[4],
Status.valueOf(splitTaskString[3]), TypeOfTask.valueOf(splitTaskString[1]));
} else if (TypeOfTask.valueOf(splitTaskString[1]) == TypeOfTask.EPIC) {
return new Epic(splitTaskString[2], splitTaskString[4],
Status.valueOf(splitTaskString[3]), TypeOfTask.valueOf(splitTaskString[1]));
}
}
return null;
Run Code Online (Sandbox Code Playgroud)