Java

1. @Override重写   用来检查是否重写父类方法,拼写错误 

   @Deprecated 标识方法过时,当其他程序使用被标识过时的类时,编译器警告
   @SuppressWarnings 屏蔽编译器警告
@SuppressWarnings(value = "unchecked")

2. 自定义Annotation

Annotation中的属性用方法定义
@interface MyTag{
    String name();
    int age();
}

如果没指定default值,要传值

class Test{
        @MyTag(name="xx",age=6)
        public void info(){
        }
}

指定后可以直接用

@interface MyTag{
    String name() default "yeeku";
    int age() default 32;
}
class Test{
        // @MyTag(name="xx",age=6)
        @MyTag
        public void info(){
        }
}

3.提取信息

Annotation[] aArray=Class.forName("Test").getMethod("info").getAnnotations();

JDK源Annotation

4.元Annotation

@Retention 定义注释保留到什么时候

@Retention(value=RetentionPolicy.RUNTIME)
//注释保留到运行中,可以通过反射获取注释
@Retention(RetentionPolicy.SOURCE)
//直接丢弃注释
@Retention(value=RetentionPolicy.CLASS)
//注释记录在clss,JVM不保存

@Target 定义注释可以修饰谁

@Target(ElementType.ANNOTIATION_TYPE)
//只能修饰Annotation
@Target(ElementType.CONSTRUCTOR)
//可以修饰构造器
@Target(ElementType.FIELD)
//只能修饰成员变量
@Target(ElementType.LOCAL_VARIABLE)
//局部变量
@Target(ElementType.METHOD)
//方法
@Target(ElementType.PACKAGE)
//
@Target(ElementType.PARAMETER)
//修饰参数
@Target(ElementType.TYPE)
//类、接口或枚举定义

@Documented 指定被该元修饰的类被javadoc工具提取成文档

@Inherited 被其修饰的Annotation具有继承性

@Inherited
public @interface Inheritable{
}
@Ingeritable
class Base{
}
//这个继承了base的子类,自带Inheritable修饰
public class TestInheritable extends Base{
  public static void main(String []arg){
    
}
}

5. APT处理Annotation

//还没看

原文地址:https://www.cnblogs.com/jieyi/p/14269027.html