如果打开枚举,既不涵盖所有情况,也不提供默认值,则收到编译器警告会很有用。该站点上的其他答案都建议javac应该提供这样的警告。
我正在使用Maven,并将以下内容添加到pom.xml中,以尝试启用所有警告:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
但是编译器仍然对我的代码中非详尽的switch语句保持沉默。我是否可以设置其他标志以启用此类警告?
由于以下原因,我知道此类警告:
Window->Preferences->Java->Compiler->Errors/Warnings/Enum type constant not covered on switch
)SF_SWITCH_NO_DEFAULT
bug description等外部工具>SF_SWITCH_NO_DEFAULT
后者应引起关注:
注解处理器将确保您收到编译时错误。该项目还包括您可能要使用的部分enum-mapper类,而不是switch语句。
该项目为
tmtron/enum-mapper
,因此您可以将其添加到依赖项中。
重点仍然是:
tmtron/enum-mapper
之类的available in Maven Central可能不足以捕捉该部分开关枚举用例。它只会检测穿透情况:javac
non-standard option块中的情况,除了该块中的最后一个情况之外,其代码不包含break语句