掌握java内置注解需从作用、适用位置、检查时机、典型错误四维度理解:@override用于重写校验(编译期),@deprecated标记过时(触发警告),@suppresswarnings选择性抑制警告,元注解@retention和@target分别控制生命周期与应用范围。

背Java常见内置注解不能靠死记硬背,得抓住作用、适用位置、检查时机、典型错误场景这四个关键维度来理解记忆。下面分三块讲清楚怎么高效掌握:
内置注解的核心用法与记忆要点
-
@Override
- 作用:声明当前方法是重写父类/接口中的方法
- 检查时机:编译期(javac)强制校验方法签名是否匹配
- 常见错用:重写toString()但拼错成toSting();或重写接口默认方法却漏掉@Override(虽不报错但易遗漏)
- 记忆口诀:“写了就得对得上,不对直接编译挂”
-
@Deprecated
- 作用:标记类、方法、字段等已过时,建议迁移替代方案
- 效果:IDE会划删除线 + 编译器发警告(非错误)
- 注意:加了它不代表立刻删,而是“请别新用,老代码可兼容”
- 可配合Javadoc的
@deprecated标签说明替代方案
-
@SuppressWarnings
- 作用:有选择地关闭编译器警告(不是屏蔽所有问题)
- 常见值:
"unchecked"(泛型擦除警告)、"deprecation"(调用过时API)、"unused"(未使用变量) - 写法示例:
@SuppressWarnings({"unchecked", "deprecation"}) - 警惕:不要滥用,应先理解警告原因再决定是否压制
元注解是理解自定义注解的基础,也常考
-
@Retention(RetentionPolicy.XXX)
- 控制注解“活到什么时候”:
-
SOURCE:只在.java源码里,编译完就丢(如@Override) -
CLASS:保留在.class字节码中,但运行时反射拿不到 -
RUNTIME:运行时还能通过反射读取(Spring注解基本都用这个)
-
- 控制注解“活到什么时候”:
-
@Target(ElementType.XXX)
- 控制注解“能贴在哪”:
-
METHOD:只能标在方法上 -
FIELD:只能标在字段上 -
TYPE:类、接口、枚举都行 -
PARAMETER:方法参数上(比如Spring的@RequestParam)
-
- 多选写法:
@Target({ElementType.METHOD, ElementType.TYPE})
- 控制注解“能贴在哪”:
面试时怎么答才显扎实
-
别光列名字,要带上下文:
“比如
@Override不只是语法糖——它让编译器在编译阶段就发现重写失败,避免运行时因方法没真正覆盖导致逻辑走错分支。” -
对比着说更出彩:
“
@Deprecated和@SuppressWarnings("deprecation")是一对‘配套动作’:前者是作者标记‘别用了’,后者是调用方表明‘我知道,但暂时还得用’。” -
提一句底层机制加分:
“这些注解本身不执行逻辑,本质是
java.lang.annotation.Annotation接口的实现,真正起作用的是编译器或框架(如Spring)在对应阶段解析它们。”
不复杂但容易忽略细节。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











