自定义注解

注解(Annotation)

语法:

@Target(ElementType[] value()) //定义注解可应用的对象 如应用于类上 方法上
@Retention(RetentionPolicy value()) //定义注解可以作用的范围 resource @interface AnnoName{
datatype param1();

  1. datatype param2() default xx ;

}

  1. public class DefAnno {
  2. //使用自定义的注解
  3. @MyAnnotation(name = "william", schools = {"CQU"})
  4. public void test() {
  5. }
  6. @MyAnnotation2("ABC") //约定如果只有一个的参数且参数名为value, 则可以省略参数名赋值
  7. public void test2() {
  8. }
  9. }
  10. //定义注解
  11. @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD}) //定义注解可应用的对象 此处为类上和方法上
  12. @Retention(RetentionPolicy.RUNTIME) //定义注解可以作用的范围 resource(源代码) < class(字节码) < runtime(运行时)
  13. @interface MyAnnotation {
  14. String name() default ""; //定义注解的参数: 参数类型 + 参数名() 后面可用default xxx 设定参数默认值
  15. int age() default 0;
  16. int id() default -1;
  17. String[] schools();
  18. }
  19. //定义另一个注解
  20. @Target(ElementType.METHOD)
  21. @Retention(RetentionPolicy.RUNTIME)
  22. @interface MyAnnotation2 {
  23. String value();
  24. }