【问题标题】:Java 7 switch statement with strings not working带有字符串的Java 7 switch语句不起作用
【发布时间】:2023-03-16 02:39:01
【问题描述】:

根据The Java Tutorials,在Java SE 7 及更高版本中,您可以在switch 语句的表达式中使用String 对象。

String s = ...
switch(s){
    //do stuff
}

但这是真的吗?我已经安装了 JRE 并将其添加到我的 Eclipse 项目的构建路径中,但是我收到了以下编译时错误:

无法打开类型的值 细绳。仅可转换的 int 值或 允许使用枚举常量

另外,我认为我已经正确配置了它,因为我能够使用它的 java.nio.file.Files 类以及 JLayer

有什么想法吗?

【问题讨论】:

  • 您是否有最新的、支持 Java 7 的 Eclipse IDE?您使用的是哪个版本? Eclipse 自带 Java 编译器!
  • 是的,尝试在 Eclipse 之外编译它,看看它是否有效。
  • @Daniel,我想我对 IDE 很幼稚。我认为使用适当的 JRE 配置构建路径可以解决问题,因为 jdk7 特定的功能正在使用 Eclipse 进行编译和运行。我想当这个功能也没有编译/运行时,我只是措手不及。我希望你不是在讽刺......
  • 由于 Eclipse 支持类的部分编译,并且即使单个函数包含编译错误也会创建有效的类文件,它只需要自己的编译器。另外,Eclipses编译器支持增量编译等,使用最新的eclipse版本即可。

标签: java eclipse string switch-statement java-7


【解决方案1】:

虽然 JDT 团队确实实现了Switch on String feature,但在 Eclipse 3.7.1 之前不会支持 Java 7:

bug 288548:

由于 JSR-292 (Invoke Dynamic) 和 JSR-334 (Project Coin) 的延迟可用 并且由于 Java 7 的正式发布日期(2011 年 7 月 28 日)在 3.7 之后 我们不得不将 Java 7 支持推迟到 3.7.1。还没有决定 这将作为 3.7.1 下载的一部分提供还是单独提供 功能更新。

Java 7 功能的工作目前正在“BETA_JAVA7”中进行 分支,我们将为稳定版本提供单独的更新,以便 为感兴趣的各方提供对 Java 7 功能的早期访问。

【讨论】:

【解决方案2】:

Eclipse 尚不支持在 JDK 7 上编译,如需尝试使用 NetBeans 7 所需的新功能,或使用 JDK 7 捆绑包中的标准 javac 编译器手动编译或借助 ant 脚本编译。

【讨论】:

    【解决方案3】:

    使用 Eclipse 3.8(第一个里程碑是几天前出现的)。不要忘记将编译器设置为 Java 7。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      相关资源
      最近更新 更多