gpt4 book ai didi

java - case 表达式必须是 static final int 的常量表达式?

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:27 29 4
gpt4 key购买 nike

我有一个 final class Ring 定义为:

final class Ring {
public static final int OUT = 3;
public static final int MID = 2;
public static final int IN = 1;
}

我还有一个 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;
}

MorrisBoard.RING.OUT 引用一个在程序生命周期内不可变的变量。所有的值都是最终的。

但是,我仍然得到以下错误:case expressions must be constant expressions。我对此感到困惑 - MorrisBoard.RING.OUT 是一个常量表达式。

这是怎么回事?

最佳答案

替换

 case MorrisBoard.RING.OUT:

 case Ring.OUT:

所以这实际上是一个常量,如“在编译时确定”。

规范precises “SwitchLabel”必须是

  • case 后跟常量表达式
  • case 后跟枚举值的名称
  • 默认

被认为是有效常量表达式的是 described here in the specification .这是相当有限的。

关于java - case 表达式必须是 static final int 的常量表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14308129/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com