3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
一、概念 Annontation通常叫註解。它類似於一種安全的註釋的機制,用來將任何的信息或元數據(metadata)與程序元素(類、方法、成員變數等)進行關聯。更直白一點就是:為程序的元素(類、方法、成員變數)加上更直觀更明了的說明,這些說明信息是與程序的業務邏輯無關,並且是供指定的工具或框架使用的。其實Annontation像一種修飾符一樣,主要應用於包、類型、構造方法、方法、成員變數、參數及本地變數的聲明語句中。二、原理Annotation其實是一種介面。通過Java的反射機制相關的API來訪問annotation信息。相關類(框架或工具中的類)根據這些信息來決定如何使用該程序元素或改變它們的行為。annotation是不會影響程序代碼的執行,無論annotation怎麼變化,代碼都始終如一地執行。Java語言解釋器在工作時會忽略這些annotation,因此在JVM 中這些annotation是「不起作用」的,只能通過配套的工具才能對這些annontaion類型的信息進行訪問和處理。三、Annotation與interface的異同:1)、Annotation類型使用關鍵字@interface而不是interface。這個關鍵字聲明隱含了一個信息:它是繼承了java.lang.annotation.Annotation介面,並非聲明了一個interface2)、Annotation類型、方法定義是獨特的、受限制的。Annotation 類型的方法必須聲明為無參數、無異常拋出的。這些方法定義了annotation的成員:方法名成為了成員名,而方法返回值成為了成員的類型。而方法返回值類型必須為primitive類型、Class類型、枚舉類型、annotation類型或者由前面類型之一作為元素的一維數組。方法的後面可以使用 default和一個默認數值來聲明成員的默認值,null不能作為成員默認值,這與我們在非annotation類型中定義方法有很大不同。Annotation類型和它的方法不能使用annotation類型的參數、成員不能是generic。只有返回值類型是Class的方法可以在annotation類型中使用generic,因為此方法能夠用類轉換將各種類型轉換為Class。3)、Annotation類型又與介面有著近似之處。它們可以定義常量、靜態成員類型(比如枚舉類型定義)。Annotation類型也可以如介面一般被實現或者繼承。四、應用場合Annotation主要作為一種輔助途徑,一般應用在軟體框架或工具中,在這些工具類中根據不同的 annontation註解信息採取不同的處理過程或改變相應程序元素(類、方法及成員變數等)的行為。

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦