Java基础之内置注解有哪些?

Java基础最常用内置注解为@Override、@Deprecated和@SuppressWarnings,均位于java.lang包,由JVM支持,保留策略均为SOURCE。@Override用于方法重写校验;@Deprecated标记过时元素并触发编译警告;@SuppressWarnings选择性抑制特定编译警告。

Java基础中最常用的内置注解就三个:@Override、@Deprecated 和 @SuppressWarnings。它们都定义在 java.lang 包中,由JVM直接支持,无需额外引入,编译器会主动识别并执行相应检查或提示。

@Override:确保方法真正重写父类/接口方法

这个注解加在方法上,告诉编译器“我打算重写父类(或实现接口)里的某个方法”。编译器会严格校验:方法名、参数列表、返回类型是否完全匹配;若不匹配(比如拼错名字、少一个参数),立刻报错,而不是静默编译通过。

  • 只能用于方法,不能修饰类、字段或参数
  • 保留策略是 RetentionPolicy.SOURCE,即只在源码阶段有效,编译后.class里就没了
  • 即使不写 @Override,重写也能运行;但写了就能防错,尤其父类方法签名变更时能提前暴露问题

@Deprecated:标记代码已过时,提醒别再用

加在类、方法、字段甚至参数上,表示该元素已被弃用,可能有缺陷、有更优替代,未来版本会移除。只要有人调用它,编译器就会给出黄色警告(不是错误,仍可编译)。

  • 建议配合 JavaDoc 的 @deprecated 标签一起使用,说明为什么弃用、该用什么替代
  • 保留策略也是 SOURCE,不影响运行时行为
  • 自定义类或工具方法也可以用它来引导团队升级使用方式

@SuppressWarnings:有选择地关闭特定编译警告

当某段代码确实需要绕过某些编译器警告(比如泛型未检查、变量未使用、序列化UID缺失),又不想全局关掉警告时,就用它精准压制。

  • 常用值有 "unchecked"(泛型强转警告)、"unused"(未使用变量)、"all"(全部,慎用)
  • 作用范围越小越好——优先加在方法或变量上,而不是整个类
  • 保留策略同样是 SOURCE,仅影响编译过程,不进入字节码
  • 不推荐滥用:掩盖警告可能隐藏真实问题,比如忽略 serialVersionUID 可能在反序列化时出错

基本上就这些。这三个注解不复杂,但容易忽略细节——比如误以为 @Override 是可选的装饰、或把 @SuppressWarnings 当成“消警告万能膏药”。理解它们的触发时机和设计意图,才能写出更健壮、更易维护的代码。