中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java注解與元注解實例分析

發布時間:2022-05-13 13:38:18 來源:億速云 閱讀:160 作者:iii 欄目:編程語言

這篇文章主要介紹“java注解與元注解實例分析”,在日常操作中,相信很多人在java注解與元注解實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java注解與元注解實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

java注解與元注解實例分析

一、注解的基本介紹

Annotation(注解)也被稱為元數據(Metadata)是JDK1.5及以后版本引入的,用于修飾解釋 包、類、方法、屬性、構造器、局部變量等數據信息。它可以用于創建文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。

       注解是以‘@注解名’在代碼中存在的,根據注解參數的個數,我們可以將注解分為:標記注解、單值注解、完整注解三類。和注釋一樣,注解不影響程序邏輯,但注解可以被編譯或運行,相當于嵌入在代碼中的補充信息。

       另外,你可以在編譯時選擇代碼里的注解是否只存在于源代碼級,或者它也能在class文件、或者運行時中出現(SOURCE/CLASS/RUNTIME)。

       在 JavaSE 中,注解的使用目的比較簡單,例如標記過時的功能,忽略警告等。在 JavaEE 中注解占據了更重要的角色,例如用來配置應用程序的任何切面,代替 java EE 舊版中所遺留的繁冗代碼和 XML 配置等。


二、Annotation的基本介紹

1、三種基本的Annotaton

@Override  : 限定某個方法,是重寫父類方法  ,  該注解只能用于方法

@Deprecated  : 用于表示某個程序元素  (  類  ,  方法等  )  已過時

@SuppressWarnings  : 抑制編譯器警告


2、代碼示例

@Override

class Son extends Father{

    @Override
    public void play(){}

}

注意:

       @Override 表示子類的 play 方法時重寫了父類的 play

這里如果沒有寫  @Override  還是會重寫了父類 ply

       如果你寫了@Override 注解,編譯器就會去檢查該方法是否真的重寫了父類的  方法,如果的確重寫了,則編譯通過,如果沒有構成重寫,則編譯錯誤。

       @Override 只能修飾方法,不能修飾其它類、包、屬性等。

@Deprecated

@Deprecated
class A{
    @Deprecated
    public static int name = 1;

    @Deprecated
    public void play(){ }
}

注意:

       已過時不是不能使用,只是不推薦使用,但是仍然可以使用

       可以修飾方法,類,字段, 包, 參數 等

       它的作用是可以做到新舊版本的兼容和過渡


@SuppressWarnings

@SuppressWarnings ("all")
public class word{ }

注意:

        關于 SuppressWarnings 作用范圍是和你放置的位置相關。比如@SuppressWarnings 放置在 main 方法,那么抑制警告的范圍就是 main

        通過 @SuppressWarnings 的源碼可知,其注解目標為類、字段、函數、函數入參、構造函數和函數的局部變量。


三、@SuppressWarnings的指定警告類型

關鍵字解釋
all抑制所有警告
boxing抑制與封裝/拆裝作業相關的警告
cast抑制與強制轉型作業相關的警告
dep-ann抑制與淘汰注釋相關的警告
deprecation抑制與淘汰的相關警告
fallthrough抑制與 switch 陳述式中遺漏 break 相關的警告
finally抑制與未傳回 finally 區塊相關的警告
hiding抑制與隱藏變數的區域變數相關的警告
incomplete-switch抑制與 switch 陳述式(enum case)中遺漏項目相關的警告
javadoc抑制與 javadoc 相關的警告
nls抑制與非 nls 字串文字相關的警告
null抑制與空值分析相關的警告
rawtypes抑制與使用 raw 類型相關的警告
resource抑制與使用 Closeable 類型的資源相關的警告
restriction抑制與使用不建議或禁止參照相關的警告
serial抑制與可序列化的類別遺漏 serialVersionUID 欄位相關的警告
static-access抑制與靜態存取不正確相關的警告
static-method抑制與可能宣告為 static 的方法相關的警告
super抑制與置換方法相關但不含 super 呼叫的警告
synthetic-access抑制與內部類別的存取未最佳化相關的警告
sync-override抑制因為置換同步方法而遺漏同步化的警告
unchecked抑制與未檢查的作業相關的警告
unqualified-field-access抑制與欄位存取不合格相關的警告
unused抑制與未用的程式碼及停用的程式碼相關的警告

四、元注解

1、基本介紹

? 什么是元注解:

元注解就是解釋注解的注解,它注解的對象是我們前面介紹的注解,如:@Override、@Deprecated@SuppressWarnings       

? 四種元注解:

        Retention:指定注解的作用范圍,三種 SOURCE,CLASS,RUNTIME   

        Target:指定注解可以在哪些地方使用   

        Documented :指定該注解是否會在 javadoc 體現   

        Inherited:子類會繼承父類注解  

? 注解的注意事項:  

       注解僅存在于源碼中,在class字節碼文件中不包含    

       默認的保留策略,注解會在class字節碼文件中存在,但運行時無法獲得,    

       注解會在class字節碼文件中存在,在運行時可以通過反射獲取到    

      首先要明確生命周期長度 SOURCE < CLASS < RUNTIME ,前者能作用的地方后者一定也能作用。

①:一般如果需要在    運行時去動態獲取注解信息,那只能用 RUNTIME 注解;

②:如果要在    編譯時進行一些預處理操作,比如生成一些輔助代碼(如 ButterKnife),就用 CLASS注解;

③:如果只是做一些    檢查性的操作如 @Override 和 @SuppressWarnings,則可選用 SOURCE 注解。


2、Retention注解

解釋:

        只能用于修飾一個 Annotation 定義, 用于指定該 Annotation 可以保留多長時間,@Rentention 包含一個 RetentionPolicy 類型的成員變量, 使用 @Rentention 時必須為該 value 成員變量指定值(值有三種)。

   

三種值:

         RetentionPolicy.SOURCE: 編譯器使用后,直接丟棄這種策略的注釋。

            RetentionPolicy.CLASS: 編譯器將把注解記錄在 class  文件中 .  當運行  Java  程序時 , JVM  不會保留注解。 這是默認值。

              RetentionPolicy.RUNTIME: 編譯器將把注解記錄在 class   文件中  .   當運行   Java   程序時  , JVM   會保留注解  .   程序可以 通過反射獲取該注解。


3、Target 注解

解釋:

       用于修飾 Annotation 定義,指定被修飾的 Annotation 能用于修飾哪些程序元素。@Target 也包含一個名為 value 的成員變量。


4、Documented 注解

解釋:

@Documented: 用于指定被該元注解修飾的 Annotation 類將被javadoc 工具提取成文檔,即在生成文檔時,可以看到該注解。

注意:

       定義為@Documented 的注解必須設置Retention值為RUNTIME。


5、Inherited 注解

解釋:

       被@Inherited 修飾的注解 將具有繼承性,如果某個類使用了被 @Inherited修飾的注解,則其子類將自動具有該注解

到此,關于“java注解與元注解實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳江县| 西丰县| 那曲县| 永春县| 荆州市| 清流县| 汉中市| 从化市| 太原市| 蓝山县| 哈巴河县| 桂林市| 高雄县| 东山县| 英吉沙县| 寿阳县| 滨海县| 永州市| 湘阴县| 金湖县| 长岭县| 南乐县| 厦门市| 孟州市| 伊金霍洛旗| 宿迁市| 贡山| 渭源县| 孟村| 长寿区| 肇源县| 瓦房店市| 靖远县| 陕西省| 内黄县| 嘉善县| 山阳县| 光泽县| 米易县| 新营市| 隆尧县|