注解

注解

​ 注解是jdk1.5引入的技术

1.范围

TYPE, 可用于class,interface,Annotation,enum上面

FIELD, 属性上面,即成员变量

METHOD, 方法上面

PARAMETER, 方法的参数前面,比如test(@Nullable String name) 允许这个参数为空

ANNOTATION_TYPE, 注解类型上面

2.元注解

​ 元注解是在我们自定义注解的时候用的,java中就只有四个

  • @Target,用于描述注解的使用范围

  • @Retention,保留策略,决定是保留到源代码中 (SOURCE,在编译完,成为class文件的时候,注解被遗弃)/ Class文件中(CLASS,在class文件中有,但当jvm加载这个class文件之后,就没有了)/ 加载到内存中(RUNTIME,一直存在)

    拿SOURCE举个栗子,它对应着编译阶段,@Override用的就是它,所以在编译的时候就会检查此方法是不是重写的

    注意,若要用到反射技术,则必须使用RUNTIME,因为它在运行阶段有效

  • @Documented, 使用了该元注解的注解,该注解的信息将会被生成到API帮助文档中

    比如我定义了一个注解

	@Target(ElementType.METHOD)
	@Documented
	public @interface MyAnnotation{
          String[] value();
          int a();
	}

然后使用这个注解,该传参的传参

	public class AnnotationTest {
        @MyAnnotation(value ="tom",a=10)
          public void sayHello(){
          System.out.println("Hello World!");
      	  }
	}

然后利用idea或eclipse生成该java文件的javadoc(就是API帮助文档),如下,注解的信息就出现在了API中

  • Inherited, 会被继承, 假如某父类上使用了该注解,那么它的子类也默认使用了该注解
posted @ 2021-12-26 21:16  朱在春  阅读(29)  评论(0编辑  收藏  举报