@suppresswarnings("deprecation")用于抑制调用@deprecated成员的编译警告,须紧贴触发位置、拼写为小写"deprecation",推荐优先改用替代方案而非盲目压制。

在 Java 中,@SuppressWarnings("deprecation") 是专门用来抑制“调用已废弃(@Deprecated)方法或类”所产生的编译警告的注解。它不会影响运行时行为,只让编译器忽略相关警告。
作用范围要明确
这个注解必须紧挨着触发警告的代码所在位置,且只对**其直接作用域内**的废弃调用生效:
- 加在方法上 → 抑制该方法体内所有废弃调用的警告
- 加在变量声明前 → 只抑制该变量初始化时的废弃调用(如用废弃构造器)
- 不能加在类级别来全局压制所有废弃警告(除非整个类里只有那一个废弃调用,且恰好在构造器里)
写法要规范
注意拼写准确,引号内必须是小写 "deprecation"(不是 "deprecated" 或 "deprecate"):
@SuppressWarnings("deprecation")
public void doOldStuff() {
Date date = new Date(); // 假设 Date() 构造器被标记为 @Deprecated
System.out.println(date);
}
如果误写成 "deprecated",编译器会报错:未识别的警告类别。
不推荐无脑压制
虽然能消除警告,但掩盖了潜在问题:
- 废弃 API 通常意味着有更安全、高效或符合新标准的替代方案
- 建议先查 Javadoc,改用推荐的替代方法(比如用
LocalDateTime.now()替代new Date()) - 若确实无法立即替换(如依赖旧库、兼容性要求),再加该注解,并配上简短注释说明原因
和其它警告一起压制
如果同时有多个警告需要忽略,可以传入字符串数组:
@SuppressWarnings({"deprecation", "unchecked", "rawtypes"})
public void mixedLegacyCode() {
List list = new ArrayList(); // raw type + deprecation if applicable
list.add(new Date()); // deprecated call
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











