返回封闭开关表达式之外在 Java 13 中使用yield在 Java 12 中使用break
2022-09-03 18:14:13
我在Java 12中使用了一个开关表达式¹,将字符串转换为HTTP方法:
static Optional<RequestMethod> parseRequestMethod(String methodStr) {
return Optional.ofNullable(
switch (methodStr.strip().toUpperCase(Locale.ROOT)) {
case "GET" -> RequestMethod.GET;
case "PUT" -> RequestMethod.PUT;
case "POST" -> RequestMethod.POST;
case "HEAD" -> RequestMethod.HEAD;
default -> {
log.warn("Unsupported request method: '{}'", methodStr);
return null;
}
});
}
我想警告默认分支中不受支持的方法并返回null(然后将其包装在Anodset中)。
但上面的代码会导致编译器错误:
返回封闭开关表达式之外
如何编译它?
为了完整起见,以下是枚举的定义:RequestMethod
enum RequestMethod {GET, PUT, POST, HEAD}
¹ switch 表达式作为预览功能在 Java 12 中引入。