【问题标题】:How can non-final variables be switch constants?非最终变量如何成为开关常量?
【发布时间】:2014-12-23 14:58:49
【问题描述】:
public class SwitchTest {

public static void main(String[] args) {
    Integer i = new Integer(2) + new Integer(2);

    switch(i){
      case 4: System.out.println("foo"); break;
      default: System.out.println("default"); break;
    }
  }
}

整数 i 未标记为最终值。 (我只是java的初学者。)

【问题讨论】:

  • i 在这里不是“开关常数”,而是被打开的变量。它将打开当前值,就像if。
  • 开关参数不必是最终的。您的环境中有一些不正确的地方。
  • 你也可以写:switch(new Random().nextInt())没有任何问题。但是你不能写case new Random().nextInt():,因为每个case都需要一个编译时常量。

标签: java switch-statement constants final


【解决方案1】:

您将case 标签与switch 操作数混淆了。

switching 在非常量值上没有任何问题;事实上,如果没有它,switch 将几乎毫无用处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多