系統內置了三種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文件;
要讓註解起做用,一般用註解修飾方法或者類,而後用註解處理器對被修飾的方法或者類進行處理,真正進行操做的是註解處理器,註解做爲用於定位的工具,讓註解處理器定位到具體的類或者方法,而後進行處理,肯定定位是經過反射進行的;