Mat*_*ias 7 java enums javac switch-statement
使用 OpenJDK 14.0.1
public class Example {
private String test(final ExampleEnum ee) {
return switch (ee) {
case Value -> null;
};
}
}
Run Code Online (Sandbox Code Playgroud)
public enum ExampleEnum {
Value;
public enum InnerEnum {
}
}
Run Code Online (Sandbox Code Playgroud)
编译失败并显示“开关表达式未涵盖所有可能的输入值”。如果我InnerEnum从ExampleEnum代码中删除编译。为什么这个内部枚举的存在会导致 switch 表达式失败?是否有逻辑解释或编译器错误?
小智 6
您需要添加默认情况,如下所示:
public class Example {
private String test(final ExampleEnum ee) {
return switch (ee) {
case Value -> null;
default -> throw new IllegalStateException("Unexpected value");
};
}
Run Code Online (Sandbox Code Playgroud)