小编Ily*_*lya的帖子

为什么Java 12会尝试将切换结果转换为数字?

我同意以下代码:

var y = switch (0) {
    case 0 -> '0';
    case 1 -> 0.0F;
    case 2 -> 2L;
    case 3 -> true;
    default -> 4;
};
System.out.println(y);
System.out.println(((Object) y).getClass().getName());
Run Code Online (Sandbox Code Playgroud)

返回此:

0
java.lang.Character
Run Code Online (Sandbox Code Playgroud)

但是,如果删除布尔值:

var y = switch (0) {
    case 0 -> '0';
    case 1 -> 0.0F;
    case 2 -> 2L;
    default -> 4;
};
System.out.println(y);
System.out.println(((Object) y).getClass().getName());
Run Code Online (Sandbox Code Playgroud)

返回此:

48.0
java.lang.Float
Run Code Online (Sandbox Code Playgroud)

我想这个结果是出乎意料的。

java switch-statement java-12

42
推荐指数
1
解决办法
1933
查看次数

标签 统计

java ×1

java-12 ×1

switch-statement ×1