Aza*_*Aza 13 java final switch-statement
我有一个final class Ring定义为:
final class Ring {
public static final int OUT = 3;
public static final int MID = 2;
public static final int IN = 1;
}
Run Code Online (Sandbox Code Playgroud)
我也有public class MorrisBoard以下代码:
public class MorrisBoard {
public static final Ring RING = new Ring();
private boolean checkMillBy(int ring, int x, int y) {
switch(ring) {
case MorrisBoard.RING.OUT:
//...
case MorrisBoard.RING.MID: //etc.
//...
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
MorrisBoard.RING.OUT引用一个在程序生命周期中不可变的变量.所有值都是最终的.
但是,我仍然收到以下错误:case expressions must be constant expressions.我对此感到困惑 - MorrisBoard.RING.OUT是一个不变的表达.
这里发生了什么?
Den*_*ret 16
更换
case MorrisBoard.RING.OUT:
Run Code Online (Sandbox Code Playgroud)
同
case Ring.OUT:
Run Code Online (Sandbox Code Playgroud)
所以这将是一个常数,如"在编译时确定".
规范预先确定"SwitchLabel"必须是
case 然后是一个恒定的表达case 后跟枚举值的名称default在本说明书中描述了被认为是有效常量表达式的内容.它相当有限.
| 归档时间: |
|
| 查看次数: |
24409 次 |
| 最近记录: |