Loading

注解

注解

Java常用的三个内置注解:

  • @Override : 定义在Java.lang.Override中,表示覆盖父类方法;

  • @Deprecated : 定义在Java.lang.Deprecated中,表示不建议使用的;

  • @SuppressWarning : 定义在Java.lang.SuppressWarning中,抑制警告信息;

元注解:

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

自定义注解:

  • 使用@interface自定义注解时,自动继承了Java.lang.annotation.Annotation接口;

  • 定义注解的格式:

    • public @interface 注解名 {定义的内容}

      @Target(ElementType.METHOD)  // 注解的使用范围,多个用逗号隔开
      @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期  SOURCE>CLASS>RUNTIME
      public @interface MyAnnotation{}
      
  • 注解中参数只有一个的话,参数名一般使用value

    @Target({ElementType.METHOD,ElementType.FIELD})  // 注解的使用范围,多个用逗号隔开
    @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期  SOURCE>CLASS>RUNTIME
    @interface MyAnnotation{
        String value();
    }
    
  • 默认值的问题

    • 没有定义默认值:

      public class Test06 {
          @MyAnnotation(name = "张三",sex = 0)
          public void test01(){}
      }
      
      @Target({ElementType.METHOD,ElementType.FIELD})  // 注解的使用范围,多个用逗号隔开
      @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期  SOURCE>CLASS>RUNTIME
      @interface MyAnnotation{
          int name();
      
          String sex();
      
          // 使用注解时括号内必须有值,如果不想写,我们可以在定义注解时定义一个默认值;
      }
      
    • 定义了默认值:

    public class Test06 {
        @MyAnnotation
        public void test01(){}
    }
    
    @Target({ElementType.METHOD,ElementType.FIELD})  // 注解的使用范围,多个用逗号隔开
    @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期  SOURCE>CLASS>RUNTIME
    @interface MyAnnotation{
        int name() default 0;
    
        String sex() default "";
    
        // 使用注解时括号内必须有值,如果不想写,我们可以在定义注解时定义一个默认值;
    }
    

我们如何读取注解呢?我们可以通过反射机制!

posted @ 2020-04-08 20:27  Helen's  阅读(251)  评论(0编辑  收藏  举报