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 语言规范统一要求的警告名称。

示例:限制抑制范围

java
@SuppressWarnings("deprecation")
void callLegacyApi() {
    legacyService.oldMethod();
}

这里的 legacyService 是业务项目提供的旧接口实例。注解放在需要兼容的方法上,其他方法仍可保留弃用警告。多个名称可以写成数组,但不建议为了消除提示而直接覆盖整个类。

"deprecation " 尾部多出的空格会改变名称,复制时也要检查。可以通过下面的命令查看当前 javac 支持的 lint 名称:

bash
javac --help-lint

参考:Java 21 SuppressWarnings、javac 手册。

原笔记参考:注解整理。

文章配图