内置注解

注意:这些都是常用的,当然还有很多内置注解,请看官方文档。

  • @Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的了一个方法声明。
  • @Deprecated:用于修饰方法,属性,类,不推荐使用,通常是因为它很危险或者存在更好的选择。
  • @SuppressWarnings:用来抑制编译时的警告信息,与前面两个注释不同,你需要添加一个参数才能正确使用。
    1. @SuppressWarnings("all") // 抑制所有的错误
    2. @SuppressWarnings("unchecked")
    3. @SuppressWarnings("unchecked","deprecation")
    4. ....

元注解

  • 元注解的作用就是负责注释其他注解,java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型做说明。
  • @Target:用来描述注解的使用范围(即:被描述的注解可以用在什么地方)。
  • @Retention:表示需要在什么级别保存该注解信息,用来描述注解的生命周期(SOURCE<CLASS<RUNTIME)。
  • @Document:说明该注解将被包含在javadoc中。
  • @Inherited:说明子类可以继承父类中的该注解。

如何定义Annotation

  1. // 第一步,用@interface定义注解
  2. public @interface Demo{
  3. }
  4. // 第二步,添加参数,默认值
  5. public @interface Demo{
  6. int type() default 0;
  7. String name() default "",
  8. String value() default ""
  9. }
  10. // 把最常用的参数定义为value(),推荐所有参数都尽量设置默认值
  11. // 第三步,用元注解配置注解
  12. @Target(ElementType.TYPE)
  13. @Retention(RetentionPolicy.RUNTIME)
  14. public @interface Demo{
  15. int type() default 0;
  16. String name() default "",
  17. String value() default ""
  18. }
  19. // 其中,必须设置@Target和@Retention,@Retention一般设置为RUNTIME,因为我们自定义的注解通常要求在运行期读取。一般情况下,不必写@Inherited和@Repeatable。