JavaSE进阶

 

8.2.3 自定义注解与反射读取注解

  • 定义新的 Annotation 类型使用 @interface 关键字
  • Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明. 其方法名和返回值定义了该成员的名字和类型. 我们称为配置参数。类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型、以上所有类型的数组
  • 可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字
  • 如果只有一个参数成员,建议使用参数名为value
  • 如果定义的注解含有配置参数,那么使用时必须指定参数值,除非它有默认值。格式是“参数名 = 参数值”,如果只有一个参数成员,且名称为value,可以省略“value=”
  • 没有成员定义的 Annotation 称为标记; 包含成员变量的 Annotation 称为元数据 Annotation

注意:自定义注解必须配上注解的信息处理流程才有意义。

 

package com.annotation.javadoc;

 

import java.lang.annotation.Annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

 

@MyAnnotation(value="尚硅谷")

public class TestMyAnnotation {

 

    public static void main(String[] args) {

        Class clazz = TestMyAnnotation.class;

        Annotation a = clazz.getAnnotation(MyAnnotation.class);

        MyAnnotation m = (MyAnnotation) a;

        String info = m.value();

        System.out.println(info);

    }

 

}

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.TYPE)

@interface MyAnnotation{

    String value() default "auguigu";

}