java中的注解

一、注解

  注解起到标识作用。比如Junit的@Test注释。Junit会在运行时检查方法上是否存在此注解,如果存在,就通过反射来运行你的方法
  1、注解的作用:替代配置文件
  2、JDK中提供的三个基本的注解
    @Override:说明是否覆盖了父类的方法。
    @Deprecated:说明过时了。
    @SuppressWarnings:抑制警告
    @SuppressWarnings("抑制的警告的具体类型"):
      unused:变量未使用
      deprecation:使用了不赞成使用的类或方法时的警告
      unchecked:执行了未检查的转换时的警告。比如没有使用泛型
      falthrough:当switch程序块直接通往下一种情况而没有break时的警告
      path:在类路径、源文件路径等中有不存在的路径时的警告。
      serial:当在可序列化雷尚缺少serialVersionUID定义时的警告
      finally:任何finally子句不能正常完成时的警告。
      all:关于以上所有情况的警告。
  3、注解学习目标:
    a、自定义注解
    b、反射注解
  4、自定义注解的语法:
    注解本身:public @interface MyAnnotation{}
      使用关键字@interface定义一个类而已。这个类就是注解。
    注解中的属性:
      基本形式:类型 属性名称();
      比如:String name();
      使用:@MyAnnotationDemo1(name="hello")
      特别注意:注解的属性的类型只能是:基本类型、String、Class、枚举、注解类型及以上类型的一维数组。
      注解属性的默认值:
        类型 属性名称() default 默认值;
      注解中的特殊属性:
        类型 value();

          使用时,如果只给value设置值,可以这样用:@MyAnnotationDemo1(value="hello")或者@MyAnnotationDemo1("hello")
          使用时,如果只给value设置值,还要给其他属性设置值,可以这样用:@MyAnnotationDemo1(value="hello",name="aaa")
        类型[] value();
          使用方式如同value。
          使用方式:四种都ok
          // @MyAnnotationDemo1(value={"a","b"})
          // @MyAnnotationDemo1({"a","b"})
          // @MyAnnotationDemo1({"a"})
          // @MyAnnotationDemo1("a")

  5、元注解:
    定义:服务于注解的注解就是元注解。
    ***@Retention:注解的保留范围
        RetentionPolicy.SOURCE:注解存在于源文件中
        RetentionPolicy.CLASS:注解存在于源字节码文件中
        RetentionPolicy.RUNTIME:注解存在于运行时
    ***@Target:注解出现的位置
    @Documented: 用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档.
    @Inherited: 被它修饰的 Annotation 将具有继承性.如果某个类使用了被 @Inherited 修饰的 Annotation, 则其子类将自动具有该注解

原文地址:https://www.cnblogs.com/byron0918/p/4719698.html