首頁 >Java >java教程 >java知識點詳解之註解與元註解

java知識點詳解之註解與元註解

WBOY
WBOY轉載
2022-05-13 11:57:181666瀏覽

本篇文章為大家帶來了關於java的相關知識,其中主要介紹了註解和元註解的相關問題,包括了註解的基本介紹、Annotation的基本介紹等等內容,下面一起來看一下,希望對大家有幫助。

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:指定註解可以在哪些地方使用    

Target:

指定註解可以在哪些地方使用          Documented :

指定該註解是否會在javadoc 體現

          # 

      #  ▶ 註解的注意事項:

        

#註解只存在於原始碼中,class位元組檔案中不包含   
     ,註解會在class位元組碼檔案中存在,但運作時無法取得,    
       
註解會在class位元組碼檔案中存在,運作時可以透過反射取得到   
       

首先要先明確生命週期長度 SOURCE < CLASS < RUNTIME ,前者運作的地方後者一定也能發揮作用。

                ①:一般若有使用在   編譯時

進行一些預處理操作,例如產生一些輔助程式碼(如 ButterKnife),就用 CLASS註解;

                SuppressWarnings,則可選用 SOURCE 註解。

2、Retention註解


#解釋:

##        

 

僅用於修飾一個Annotation 定義, #用於指定該#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影片教學###》###

以上是java知識點詳解之註解與元註解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除