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

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

1. 系统内建的Annotation

  • @Override@Deprecated@SuppressWarnings
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名称 { }
//自定义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

//自定义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

@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

@Documented

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

/**
 * 文档注释
 */

7. Inherited

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

@Inherited
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页