<aside> <img src="notion://custom_emoji/c233e7bc-acd0-812b-a811-00030dcd1edc/29e3e7bc-acd0-808e-ac64-007a3fac687d" alt="notion://custom_emoji/c233e7bc-acd0-812b-a811-00030dcd1edc/29e3e7bc-acd0-808e-ac64-007a3fac687d" width="40px" />
注解(Annotation) 是 Java 代码里的特殊标签。它们本身不直接改变代码的逻辑,但是可以被编译器、开发工具或者框架(如 Spring)读取,从而触发特定的行为。
注解和注释的区别:
注解在 Java 底层本质上就是一个接口(Interface),所以它完全遵循接口的成员方法规则。
</aside>
如果把代码看作是商品,而注解就是贴在商品上的“标签”或说明书。
如果没有处理程序,注解就是废纸一张,不起任何作用。
Java 语言内置了几个最常用的注解:
@Override: 告诉编译器这个方法重写了父类的方法。如果写错了方法名,编译器会报错(安全检查)。@Deprecated: 标记该方法或类已过时,不建议使用。调用时 IDE 会画删除线。@SuppressWarnings: 告诉编译器忽略特定的警告(比如忽略“未使用的变量”警告)。@FunctionalInterface: (Java 8+) 标记该接口是函数式接口(只有一个抽象方法),配合 Lambda 表达式使用。这是理解注解的关键。自定义一个注解时,需要使用**“元注解”**来定义它的行为。
最核心的两个元注解是 @Target 和 @Retention。
@Target (贴在哪?)决定了这个注解可以放在什么位置。