Java switch语句表示即使使用case 1也需要表达式

时间:2018-06-07 09:12:48

标签: java

我不确定标题写得好,但是当我写下switch语句时,

switch(testMap.get(key).getValue()){
    case 1:
        //do something
}

它表示需要持续表达。即使我把它改成

,这也没有改变
static final int CONSTANT = 1;

switch(testMap.get(key).getValue()){
    case CONSTANT:
        //do something
}

即使我认为它首先不应该改变太多......

在地图上更新..

private static final ImmutableMap<String, Pair> testMap = new ImmutableMap.Builder<String, Pair>()
    .put("example1",new Pair(Object1, 1)).put("example2", new Pair(Object2,5)).build();

1 个答案:

答案 0 :(得分:0)

如果Pair.getValue()将其返回类型声明为Object,则编译器不会知道如何对其进行切换。编译器只允许您打开整数类型或字符串或枚举。

如果知道它将是一个整数,并将其转换为int,编译器将知道可以打开它。

switch ((int) testMap.get(key).getValue()) {
    case 1: // do something
    // ...
}

根据您使用的Java版本,您可能需要将其强制转换为Integer