Eclipse上GIT外掛EGIT使用手冊之八_解決推送衝突
註解
一.認識註解
1、註解(Annotation):Java5開始,Java對元資料開始支援,就是這裡的註解
註解是來自java.lang.annotation.Annotation,
自定義的註解是實現了該介面的,所以所有的註解都是特殊的介面
列舉是特殊的類
2、註解,Annotation,標籤指的是相同的事物
3、使用註解需要三方面參與才有意義:
1.要有一個註解
2.要有別貼的程式元素(類,方法,欄位)
3.第三方程式賦予註解特殊的含義
二.JDK中的註解
JDK中內建的註解:Java為我們定義好的註解
[email protected] 限定覆寫父類方法
[email protected]標記已過時的成員,不推薦使用.
註解是從Java5開始的,在Date中很多成員都是從JDK1.1就已經過時了,在這個時候是如何來表示過時的成員?
在Java5之前是使用文件註釋來標識過時的成員
/**
*@Deprecated
/
[email protected]抑制編譯器發出的警告
只是抑制編譯器發出的警告,但是問題任然存在
@SuppressWarnings({"all"}):抑制所有型別的警告
[email protected]抑制堆汙染警告(Java7
堆汙染:當一個方法中使用了可變引數和泛型,可能出現該警告
三.JDK內建的元註解
元註解:註解的註解
註解:用來表示程式元素
@Target:表示註解可以貼在哪些位置(類,方法上,構造器上等等).
位置的常量封裝在ElementType列舉類中:
ElementType.ANNOTATION_TYPE只能修飾Annotation
ElementType.CONSTRUCTOR只能修飾構造方法
ElementType.FIELD只能修飾字段(屬性),包括列舉常量
ElementType.LOCAL_VARIABLE只能修飾區域性變數
ElementType.METHOD只能修飾方法
ElementType.PACKAGE只能修飾包(極少使用)
ElementType.PARAMETER只能修飾引數
ElementType.TYPE只能修飾類,介面,列舉
@Retention:表示註解可以儲存在哪一個時期.
儲存的時期的值,封裝在RetentionPolicy列舉類中
CLASS
編譯器將把註釋記錄在類檔案中,但在執行時VM不需要保留註釋。
RUNTIME
編譯器將把註釋記錄在類檔案中,在執行時VM將保留註釋,因此可以反射性地讀取。
SOURCE
編譯器要丟棄的註釋
注意:以後我們自定義的註解,應該儲存到哪個時期?--->RUNTIME
@Documented:使用@Documented標註的標籤會儲存到API文件中.
@Inherited:@Inherited標註的標籤可以被子類整合到.
@Inherited
public@intefaceMyAnn{}
@MyAnn
publicclassA{}
publicclassBextendsA{}
四.自定義註解
1.定義註解使用@interface
@Target({ElementType中的元素})
@Retention(RetentionPolicy.RUNTIME)
public@interface註解名稱{
Stringname()default"lucy";//在註解中稱之為屬性,元素
intage()default12;
Stringvalue();//屬性名是value的時候,那麼在使用的時候,如果只指定value的值,那麼屬性名可以省略,直接寫屬性值
}
InvalidtypeIntegerfortheannotationattributeMyAnno.age;onlyprimitivetype,String,Class,annotation,enumerationarepermittedor1-dimensionalarraysthereof
註解中的屬性的型別只能是基本資料型別,String,Class,annotation,列舉,一維陣列
2.使用註解:
@註解名詞,但是隻能貼在哪裡收到Taget裡面定義內容的限制。@Test
---------------------------------------------------------------------------
3.獲取註解:
因為在類上,方法上,欄位都可能會有註解,那麼在這些成員上面就應該有操作註解的方法
Class:
booleanisAnnotationPresent(Class<?extendsAnnotation>annotationClass)
Method:
<TextendsAnnotation>TgetAnnotation(Class<T>annotationClass)
Field:
<TextendsAnnotation>TgetAnnotation(Class<T>annotationClass)
其實我們大多數時候都是使用別人定義好的註解,自己動手定義註解的機會相對比較少。註解在一些框架中應用的比較多,比如:Junit4
轉載於:https://my.oschina.net/byronhs/blog/640420