如何在switch案例中使用Map中的int值?

Non*_*hoi 2 java hashmap switch-statement

我有一张地图:

Map<String, Integer> myMap = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)

现在我添加了一些值:

myMap.put("east", generateId());
myMap.put("west", generateId());
myMap.put("north", generateId());
myMap.put("south", generateId());
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用switch case检查匹配:

int i = myMap.get("east");
int j = myMap.get("west");
int k = myMap.get("north");
int l = myMap.get("south");
switch (myId) {
    case i:
        break;
    case j:
        break;
    case k:
        break;
    case l:
        break;
}
Run Code Online (Sandbox Code Playgroud)

它表示在所有情况下都需要常量表达式(i,j,k,l).我该如何解决这个问题?

Bat*_*eba 6

你不能.该case标签必须是编译时评估的常量表达式,和的值i等在运行时仅已知的.

请改用一系列if else语句.

if (myId == i){ 等等