• <var id="cpksz"><code id="cpksz"><blockquote id="cpksz"></blockquote></code></var>
  • <small id="cpksz"></small>

    - 聯系電話 - - 來校路線 - 廣州天河區五山路金華園區3樓307(華工南門)
    您現在的位置: 廣州電腦培訓學校 >> 電腦培訓 >> 軟件開發培訓 >> 正文  >
    電腦培訓:Annotation究竟是什么?它的工作原理是?
    發布人:廣州北大青鳥電腦學校 點擊數: 更新時間:2011-11-16 10:35:56

    今天廣州電腦培訓學校的老師跟大家講解java中的Annotation概念,以及它的工作原理。

    一、Annotation究竟是什么?

    Annotation 提供了一條與程序元素關聯任何信息或者任何元數據(metadata)的途徑。從某些方面看,annotation就像修飾符一樣被使用,并應用于包、類型、構造方法、方法、成員變量、參數、本地變量的聲明中。這些信息被存儲在annotation的“name=value”結構對中。 annotation類型是一種接口,能夠通過java反射API的方式提供對其信息的訪問。

    annotation能被用來為某個程序元素(類、方法、成員變量等)關聯任何的信息。需要注意的是,這里存在著一個基本的潛規則:annotaion不能影響程序代碼的執行,無論增加、刪除 annotation,代碼都始終如一的執行。另外,盡管一些annotation通過java的反射api方法在運行時被訪問,而java語言解釋器在工作時忽略了這些annotation。正是由于java虛擬機忽略了annotation,導致了annotation類型在代碼中是“不起作用”的;只有通過某種配套的工具才會對annotation類型中的信息進行訪問和處理。本文中將涵蓋標準的annotation和meta- annotation類型,陪伴這些annotation類型的工具是java編譯器(當然要以某種特殊的方式處理它們)。

    由于上述原因,annotation在使用時十分簡便。一個本地變量可以被一個以NonNull命名的annotation類型所標注,來作為對這個本地變量不能被賦予null值的斷言。而我們可以編寫與之配套的一個annotation代碼分析工具,使用它來對具有前面變量的代碼進行解析,并且嘗試驗證這個斷言。當然這些代碼并不必自己編寫。在JDK安裝后,在JDK/bin目錄中可以找到名為“apt”的工具,它提供了處理annotation的框架:它啟動后掃描源代碼中的annotation,并調用我們定義好的annotation處理器完成我們所要完成的工作(比如驗證前面例子中的斷言)。說到這里, annotation的強大功能似乎可以替代XDoclet這類的工具了,隨著我們的深入,大家會更加堅信這一點。

    二、Annotation的定義:

    這段文字開始介紹annotation相關技術。在此大家將看到java5.0的標準annotation類型,這種標準類型就是前文中所說的“內建”類型,它們可以直接被javac支持?上驳氖,在java6.0beta版中的javac已經加入了對自定義annotation的支持。

    三、Annotation工作原理:

    在java5.0 中Java.lang.reflect提供的反射API被擴充了讀取運行時annotation的能力。廣州電腦培訓學校的學生回顧一下前面所講的:一個 annotation類型被定義為runtime retention后,它才是在運行時可見,當class文件被裝載時被保存在class文件中的annotation才會被虛擬機讀取。

    其中java.lang.reflect.AnnotatedElement是重要的接口,它代表了提供查詢 annotation能力的程序成員。這個接口被java.lang.Package、java.lang.Class實現,并間接地被Method類、 Constructor類、java.lang.reflect的Field類實現。而annotation中的方法參數可以通過Method類、 Constructor類的getParameterAnnotations()方法獲得。

     

  • 上一個課程:
  • 下一個課程: 沒有了
  • 走進學校|電腦課程|網站導航|聯系電話020-85566215

    備案/許可證編號為粵ICP備11070650號-4

    學校地址:廣州市天河區五山路華南理工大學國家科技園金華園區3樓C307

    Copyright @ 2003-2016 www.xtvrsb.com All Rights Reserved.Optimized for 1024x768

    版權所有:廣州青大教育信息咨詢有限公司

    网上现金斗牛