在switch case中重新实例化变量

Art*_*ans 3 java switch-statement

为什么我不能在每个具有相同名称的情况下创建变量.例如,从下面的代码中,case 3它会抱怨String name已经存在 - 但为什么会这样?Case 1从来没有,永远不会被称为.

我不想从中提取定义switch-case.那么为什么使用if语句可以在每种情况下定义相同的名称,但在switch-case其中却没有?

这是一个带有switch case的简单Java代码:

int type = 3;

switch (type) {
    case 1:
        String name = (String) respone.get("name");
        user.setName(name);
        break;
    case 2:
        String surname = (String) respone.get("surname");
        user.setSurname(surname);
        break;
    case 3:
        String name = (String) respone.get("name");
        user.clearName(name);
        break;
    default:
        ...
}
Run Code Online (Sandbox Code Playgroud)

Jav*_*ier 7

将每个case语句写在不同的块中:

switch (type) {
    case 1: {
        String name = (String) respone.get("name");
        user.setName(name);
        break;
    }
    case 2: {
        String surname = (String) respone.get("surname");
        user.setSurname(surname);
        break;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 哇.第一次看到开关中的块!每天学习东西! (2认同)