格式

public @interface *元注解名

四大属性

@Target()

表示注解可以用在哪些地方,如ElementType.FIELD,只能使用在字段上,ElementType.METHOD只能用在方法上;ElementType.TYPE只能用在类上

@Retenion()

表示需要在什么级别保存该注解信息
RUNTIME > CLASS > SOURCE

@Document()

表示是否将我们的注解生成JavaDoc文档中

@Inherited()

表示可以被子类继承的注解

  1. package com.myself.learn.annotation;
  2. import java.lang.annotation.*;
  3. /**
  4. * @author zhangxiaofan
  5. * @date 2021/12/18 11:51
  6. */
  7. public class Test {
  8. @MyAnnotation
  9. private String name;
  10. @MyAnnotation
  11. public void test(){
  12. }
  13. }
  14. //表示注解可以用在那些地方,如:ElementType.FIELD,只能使用在字段上,ElementType.METHOD只能用在方法上;ElementType.TYPE只能用在类上
  15. @Target( value = { ElementType.FIELD , ElementType.METHOD ,ElementType.TYPE } )
  16. @Retention( value = RetentionPolicy.RUNTIME ) // 表示需要在什么级别保存该注释信息,用于描述注解的生命周期,表示注解在什么地方有效,使用范围:SOURCE<CLASS<RUNTIME
  17. @Documented //表示是否将我们的注解生成JavaDoc文档中
  18. @Inherited //表示可以被子类继承父类的元注解
  19. @interface MyAnnotation{
  20. }