当前位置: 首页 > 知识库问答 >
问题:

带有默认大小写的Java 14开关表达式

魏安然
2023-03-14

如何使用新的Java14开关表达式将开关大小写声明为默认值?

我想要的只是:

switch (state) {
    case PLAY -> { run(); }
    case STOP, default -> { stop(); }
}

它不编译。它用Java17个预览功能编译,但这不是解决方案?!我真的想避免使用未完成的功能。

它应该等同于旧式的开关语句:

switch (state) {
    case PLAY: run(); break;
    case STOP: // <-- No extra "break;". Intentional fall-through!
    default: stop(); break;
}

用纯Java 14(或者17)可以吗?

共有1个答案

董品
2023-03-14

不要认为这是可能的。另一种方法是在这两种情况下都只包含stop():

switch (state) {
    case PLAY -> run();
    case STOP -> stop();
    default -> stop();
}
 类似资料:
  • 在Swift中,init(rawValue:)系统可确保将Int转换为enum会导致有效的enum case或nil。 Objective-C中没有这样的安全性,其中可以通过强制转换非成员“rawValue”来创建无效枚举成员。 打开枚举时,如果未处理枚举案例,编译器会警告您: 枚举值“third”未在开关中处理 但是,一旦处理完所有案例,就不会有类似的警告,表明对于枚举的无效成员仍然可能出现“默

  • 主要内容:Java14 Switch表达式的示例Java 12 将表达式引入 Switch 语句并将其作为预览功能发布。Java 13 添加了一个新的 yield 构造来从 switch 语句返回一个值。在 Java 14 中,switch 表达式已经是一个标准特性。 每个 case 块都可以使用 yield 语句返回一个值。 在枚举的情况下,可以跳过默认情况。在其他情况下,默认情况是必需的。 Java14 Switch表达式的示例 ApiTe

  • 当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?

  • 我在data-th-case=“${gt6}”上得到一个错误。在Thymeleaf有办法做到这一点吗? 提前谢了。

  • 伙计们!我正在开发一个web应用程序,我决定使用Jackson作为JSON处理框架。 我愿意发送请求数据;假设POJO看起来像这样: 将其序列化如下: 但是我需要向该对象添加一些元数据,比如字段和。我以为会解决我的问题,但是我正在使用Jackson和泽西一起使用,所以我没有手动序列化对象,所以我不能使用。 我知道这个线程,但是没有一个答案可以满足我的需求,因为我认为,编写一个自定义序列化程序是有点

  • 问题内容: 根据文档,使用默认缓冲区大小,而第二个构造函数允许设置缓冲区大小。 public BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 但是,文档没有提到默认的缓冲区大小是多少。 BufferedReader的默认缓冲区大小是多少? 问题答案: 默认缓冲区大小为8192个字符 http://developer.android.com/ref