freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java_annotation手冊(編輯修改稿)

2025-07-26 08:41 本頁面
 

【文章內(nèi)容簡介】 能夠通過java反射API的方式提供對其信息的訪問。  annotation能被用來為某個程序元素(類、方法、成員變量等)關聯(lián)任何的信息。需要注意的是,這里存在著一個基本的潛規(guī)則:annotaion不能影響程序代碼的執(zhí)行,無論增加、刪除annotation,代碼都始終如一的執(zhí)行。另外,盡管一些annotation通過java的反射api方法在運行時被訪問,而java語言解釋器在工作時忽略了這些annotation。正是由于java虛擬機忽略了annotation,導致了 annotation類型在代碼中是“不起作用”的;只有通過某種配套的工具才會對annotation類型中的信息進行訪問和處理。本文中將涵蓋標準的 annotation和metaannotation類型,陪伴這些annotation類型的工具是java編譯器(當然要以某種特殊的方式處理它們)。由于上述原因,annotation在使用時十分簡便。一個本地變量可以被一個以NonNull命名的annotation類型所標注,來作為對這個本地變量不能被賦予null值的斷言。而我們可以編寫與之配套的一個annotation代碼分析工具,使用它來對具有前面變量的代碼進行解析,并且嘗試驗證這個斷言。當然這些代碼并不必自己編寫。在JDK安裝后,在JDK/bin目錄中可以找到名為“apt”的工具,它提供了處理annotation的框架:它啟動后掃描源代碼中的annotation,并調(diào)用我們定義好的annotation處理器完成我們所要完成的工作(比如驗證前面例子中的斷言)。說到這里,annotation的強大功能似乎可以替代XDoclet這類的工具了,隨著我們的深入,大家會更加堅信這一點。注:詳細描述請參看jsr250規(guī)范:    二、Annotation的定義:  這段文字開始介紹annotation相關技術。,這種標準類型就是前文中所說的“內(nèi)建”類型,它們可以直接被javac支持??上驳氖?。  1。Annotation的概念和語法:  首先,關鍵的概念是理解annotation是與一個程序元素相關聯(lián)信息或者元數(shù)據(jù)的標注。它從不影響java程序的執(zhí)行,但是對例如編譯器警告或者像文檔生成器等輔助工具產(chǎn)生影響?! ∠旅媸浅S玫腶nnotation列表,我們應該注意在annotation和annotation類型之間的不同: ?。骸 ?,它的行為十分類似public、final這樣的修飾符。每個annotation具有一個名字和成員個數(shù)=0。每個annotation的成員具有被稱為name=value對的名字和值(就像javabean一樣),name=value裝載了annotation的信息?! 。骸 nnotation類型定義了annotation的名字、類型、成員默認值。一個annotation類型可以說是一個特殊的java接口,它的成員變量是受限制的,而聲明annotation類型時需要使用新語法。當我們通過java反射api訪問annotation時,返回值將是一個實現(xiàn)了該 annotation類型接口的對象,通過訪問這個對象我們能方便的訪問到其annotation成員。 ?! 。骸 nnotation的成員在annotation類型中以無參數(shù)的方法的形式被聲明。其方法名和返回值定義了該成員的名字和類型。在此有一個特定的默認語法:允許聲明任何annotation成員的默認值:一個annotation可以將name=value對作為沒有定義默認值的annotation 成員的值,當然也可以使用name=value對來覆蓋其它成員默認值。這一點有些近似類的繼承特性,父類的構造函數(shù)可以作為子類的默認構造函數(shù),但是也可以被子類覆蓋。 annotation類型:  一個沒有成員定義的annotation類型被稱為marker annotation。這種annotation類型僅使用自身的存在與否來為我們提供信息。如后面要說的Override?! 。骸 etaannotation也稱為元annotation,它是被用來聲明annotation類型的annotation。下面介紹的target、retention就是metaannotation?! 。骸 nnotation的target是一個被標注的程序元素。target說明了annotation所修飾的對象范圍:annotation可被用于 packages、types(類、接口、枚舉、annotation類型)、類型成員(方法、構造方法、成員變量、枚舉值)、方法參數(shù)和本地變量(如循環(huán)變量、catch參數(shù))。在annotation類型的聲明中使用了target可更加明晰其修飾的目標?! 。骸 nnotation的retention定義了該annotation被保留的時間長短:某些annotation僅出現(xiàn)在源代碼中,而被編譯器丟棄;而另一些卻被編譯在class文件中;編譯在class文件中的annotation可能會被虛擬機忽略,而另一些在class被裝載時將被讀?。ㄕ堊⒁獠⒉挥绊慶lass的執(zhí)行,因為annotation與class在使用上是被分離的)。使用這個metaannotation可以對 annotation的“生命周期”限制?! 。骸 ∮捎趍etadata被廣泛使用于各種計算機開發(fā)過程中,所以當我們在這里談論的metadata即元數(shù)據(jù)通常指被annotation裝載的信息或者annotation本身。  2。使用標準Annotation:  : ?。骸 ?annotation類型,它被用作標注方法。它說明了被標注的方法重載了父類的方法,起到了斷言的作用。如果我們使用了這種annotation在一個沒有覆蓋父類方法的方法時,java編譯器將以一個編譯錯誤來警示。這個annotaton常常在我們試圖覆蓋父類方法而確又寫錯了方法名時發(fā)揮威力?! ∈褂梅椒O其簡單:在使用此annotation時只要在被修飾的方法前面加上@Override?! ∠旅娴拇a是一個使用@Override修飾一個企圖重載父類的toString方法,而又存在拼寫錯誤的sample:  清單1:@Overridepublic String toSting() {  // 注意方法名拼寫錯了   return [ + () + ]。} ?。骸 ⊥瑯覦eprecated也是一個marker annotation。當一個類型或者類型成員使用@Deprecated修飾的話,編譯器將不鼓勵使用這個被標注的程序元素。而且這種修飾具有一定的“ 延續(xù)性”:如果我們在代碼中通過繼承或者覆蓋的方式使用了這個過時的類型或者成員,雖然繼承或者覆蓋后的類型或者成員并不是被聲明為 @Deprecated,但編譯器仍然要報警?! ≈档米⒁猓珸Deprecated這個annotation類型和javadoc中的@deprecated這個tag是有區(qū)別的:前者是java編譯器識別的,而后者是被javadoc工具所識別用來生成文檔(包含程序成員為什么已經(jīng)過時、它應當如何被禁止或者替代的描述)?! ?,java編譯器仍然象其從前版本那樣尋找@deprecated這個javadoc tag,并使用它們產(chǎn)生警告信息。但是這種狀況將在后續(xù)版本中改變,我們應在現(xiàn)在就開始使用@Deprecated來修飾過時的方法而不是 @deprecated javadoc tag?! ∏鍐?:  下面是一段使用@Deprecated的代碼:/*** 這里是javadoc的@deprecated聲明.* @deprecated No one has players for this format any more.  Use VHS instead.*/@Deprecated public class Betamax { ... }:  @SuppressWarnings被用于有選擇的關閉編譯器對類、方法、成員變量、變量初始化的警告。,sun提供的javac編譯器為我們提供了Xlint選項來使編譯器對合法的程序代碼提出警告,此種警告從某種程度上代表了程序錯誤。例如當我們使用一個generic collection類而又沒有提供它的類型時,編譯器將提示出unchecked warning的警告?! ⊥ǔ.斶@種情況發(fā)生時,我們就需要查找引起警告的代碼。如果它真的表示錯誤,我們就需要糾正它。例如如果警告信息表明我們代碼中的switch語句沒有覆蓋所有可能的case,那么我們就應增加一個默認的case來避免這種警告。  相仿,有時我們無法避免這種警告,例如,我們使用必須和非generic的舊代碼
點擊復制文檔內(nèi)容
數(shù)學相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1