Java 给编译器看的注释--Annotation

2021-09-06 10:07:51 浏览数 (1)

文章目录

    • 1. 系统内建的Annotation
    • 2. 自定义Annotation
    • 3. Retention
    • 4. 反射 与 Annotation
    • 5. Target
    • 6. Documented
    • 7. Inherited

将配置直接写入到程序之中:Annotation

1. 系统内建的Annotation

  • @Override@Deprecated@SuppressWarnings
代码语言:javascript复制
class Person5 {
    public String say(){
        return "人在说话!";
    }
}

class Student5 extends Person5{
    @Override // 明确表示是覆写的函数,名称保持一致
    public String say() {
        return "学生在说话!";
    }

    @Deprecated // 不建议使用的操作,使用会出现警告
    public String getInfo(){
        return "hello";
    }
}

class test7{
    @SuppressWarnings("deprecated")//压制警告信息
    public static void main(String[] args){
        Student5 s = new Student5();
        System.out.println(s.say());
        System.out.println(s.getInfo());
    }
}

2. 自定义Annotation

  • public @interface MyAnnotation名称 { }
代码语言:javascript复制
//自定义Annotation
public @interface MyAnnotation{
    public String key() default "Michael";
    public String value() default "Ming";
    public Color color() default Color.RED;//限定枚举的参数范围
    public String[] url();
}

@MyAnnotation(color=Color.BLUE, key="Michael", value="Ming",
                url={"https://michael.blog.csdn.net/","abc.xxx"})
class Info{

}

3. Retention

也是一个 Annotation,其取值是通过 RetentionPolicy (枚举)指定

4. 反射 与 Annotation

代码语言:javascript复制
//自定义Annotation
@Retention(value=RetentionPolicy.RUNTIME) // 运行的时候可见
@interface MyAnnotation{
    public String key() default "Michael";
    public String value() default "Ming";
    public EnumDemo.Color color() default EnumDemo.Color.RED;//限定枚举参数范围
    public String[] url();
}

5. Target

也是一种 Annotation

代码语言:javascript复制
@Target(value=ElementType.METHOD) // 只能在方法上使用
//@Target(value = {ElementType.METHOD, ElementType.TYPE}) // 多个选项
@Retention(value=RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    public String key() default "Michael";
    public String value() default "Ming";
    public EnumDemo.Color color() default EnumDemo.Color.RED;//限定参数范围
    public String[] url();
}

6. Documented

也是一种 Annotation

代码语言:javascript复制
@Documented

可以在使用类中加入文档注释,方便生成文档

代码语言:javascript复制
/**
 * 文档注释
 */

7. Inherited

也是一种 Annotation,写了@Inherited的 Annotation 才能被子类继承

代码语言:javascript复制
@Inherited

0 人点赞