如何将两个“else”合二为一?

1 java if-statement

在我的程序中,我有两个类似的“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”中,但我不确定这是最佳方式

Ell*_*sch 5

删除两者并通过。喜欢,

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)