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
//还没看