YCF*_*F_L 7 java sonarqube switch-expression java-17
我有一个简单的方法,它接受一个枚举并返回一个字符串:
public static String enumToString(MyEnum type) {
return switch (type) {
case Enum1 -> "String_1";
case Enum2 -> "String_2";
case Enum3 -> "String_3";
case Enum4 -> "String_4";
case Enum5 -> "String_5";
case Enum6 -> "String_6";
default -> null;
};
}
Run Code Online (Sandbox Code Playgroud)
但是声纳给了我这个 Major error: Unused method参量应该被删除。
正如您所看到的,参数类型用于开关中。有关更多详细信息,当我使用旧开关盒时,一切正常。
关于这个问题有什么想法吗,sonar 是否涵盖了新的 Java 语法?
嗯,我注意到当我移除default -> null;声纳时正确通过!这很奇怪。
public static String enumToString(MyEnum type) {
return switch (type) {
case Enum1 -> "String_1";
case Enum2 -> "String_2";
case Enum3 -> "String_3";
case Enum4 -> "String_4";
case Enum5 -> "String_5";
case Enum6 -> "String_6";
//default -> null;
};
}
Run Code Online (Sandbox Code Playgroud)
这不是一个错误,Sonar 正确地评估,如果列表是详尽的,则 switch表达式永远不会落入default分支。
另一方面,如果您决定不列出所有可能的枚举常量,default则必须声明分支。否则,代码将无法编译,因为要求每个枚举常量都可以匹配。
注意:您的代码包含 switch 表达式,而不是 switch 语句。
| 归档时间: |
|
| 查看次数: |
3734 次 |
| 最近记录: |