TECH NOTES / Java 与 Spring
Java @SuppressWarnings 使用笔记
原笔记 2022-01-14 · 整理于 2026-10-05
@SuppressWarnings 用于抑制特定的编译警告。先理解警告的原因,能修正类型和调用方式时优先修正;确实需要兼容旧接口时,再在最小范围内使用注解。
常见名称
| 名称 | 含义 |
|---|---|
unchecked |
未经检查的转换或调用,例如从原始类型转为参数化类型 |
deprecation |
使用已弃用的 API |
removal |
使用已标记计划移除的 API |
rawtypes |
javac 对使用原始泛型类型的警告,例如直接声明 List |
serial |
javac 的序列化相关警告,例如缺少 serialVersionUID |
fallthrough |
javac 对 switch 分支意外贯穿的警告 |
不同编译器、IDE 支持的名字并不完全相同。原笔记将 resource 解释为“有泛型未指定类型”,这是不准确的;原始泛型类型应对应 rawtypes。unused 等检查也不能一概当作 Java 语言规范统一要求的警告名称。
示例:限制抑制范围
@SuppressWarnings("deprecation")
void callLegacyApi() {
legacyService.oldMethod();
}这里的 legacyService 是业务项目提供的旧接口实例。注解放在需要兼容的方法上,其他方法仍可保留弃用警告。多个名称可以写成数组,但不建议为了消除提示而直接覆盖整个类。
"deprecation " 尾部多出的空格会改变名称,复制时也要检查。可以通过下面的命令查看当前 javac 支持的 lint 名称:
javac --help-lint参考:Java 21 SuppressWarnings、javac 手册。
原笔记参考:注解整理。