系统内置了三种Annotation:html
@Override,指明要进行重写方法;@SuppressWarnings:指压制警告,使用方法:@Suppress Warnings("unchecked");java
@Deprecated:指明不建议使用的;ide
自定义Annotation:工具
Annotation的使用方法:spa
//最简单的一种
1 @interface MyAnnotation{ 2 public String value(); 3 }
1 @interface MyAnnotation{ 2 public String value(); 3 public String key(); 4 }
1 @interface MyAnnotation{ 2 public String[] value(); 3 }
1 @interface MyAnnotation{ 2 public String value() default "hh"; 3 }
1 enum Person{ 2 LV,BB; 3 } 4 @interface MyAnnotation{ 5 public Person value() default Person.BB; 6 }
四个做用于Annotation的Annotation:
@Retetion:指定Annotation的做用范围,value=RUNTIME/CLASS/SOURCE,RUNTIME:保存在源文件,.class文件和JVM;CLASS:保存在源文件和.class文件;code
SOURCE:保存在源文件;htm
@Target:指定Annotation做用的位置;blog
@Documented:指示某一类型的注释将经过 javadoc 和相似的默认工具进行文档化;继承
@Inherited:指示注释类型被自动继承,注意,若是使用注释类型注释类之外的任何事物,此元注释类型都是无效的;接口
反射机制与Annotation:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
public Annotation[] getDeclaredAnnotations()
public boolean isAnnotation();
怎样让注解起做用:
注解是用于修饰的,语义上与注释类似,可是注解是java代码的一部分,会被编译成.class文件;
要让注解起做用,一般用注解修饰方法或者类,而后用注解处理器对被修饰的方法或者类进行处理,真正进行操做的是注解处理器,注解做为用于定位的工具,让注解处理器定位到具体的类或者方法,而后进行处理,肯定定位是经过反射进行的;