本篇文章為大家帶來了關於java的相關知識,其中主要介紹了註解和元註解的相關問題,包括了註解的基本介紹、Annotation的基本介紹等等內容,下面一起來看一下,希望對大家有幫助。
推薦學習:《java影片教學》
Annotation(註解)也稱為元資料(Metadata)是JDK1.5及以後版本引入的,用於修飾解釋包、類別、方法、屬性、建構器、局部變數等資料資訊。它可以用於創建文檔,追蹤程式碼中的依賴性,甚至執行基本編譯時檢查。
註解是存在於'@註解名'在程式碼上的,根據註解參數的個數,我們可以將註解分為:標記註解、單值註解、完整註解三類。和註解一樣,註解不影響程式邏輯,但註解可以被編譯或運行,相當於嵌入在程式碼中的補充資訊。
另外,你可以在編譯時選擇程式碼裡的註解是否只存在於原始碼級,或者它也能在class檔案、或執行時出現(SOURCE/CLASS/ RUNTIME)。
在 JavaSE 中,註解的使用目的較簡單,例如標記過時的功能,請忽略警告等。在 JavaEE 中註解佔據了更重要的角色,例如用來配置應用程式的任何切面,取代 java EE 舊版中所遺留的繁冗餘程式碼和 XML 配置等。
@Override # : 限定某個方法,是重寫父類別方法 , 此註解只能用於方法
@Deprecated # : 用來表示某個程式元素 ( 類別 , 方法等 ) 已過時
@SuppressWarnings : 抑制編譯器警告
@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 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。
关键字 | 解释 |
---|---|
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 | 抑制與未使用的程式碼及停用的程式碼相關的警告 |
#▶ 什麼是元註解:
元註解就是解釋註解的註解,它註解的物件是我們前面介紹的註解,如:@Override、@Deprecated 、@SuppressWarnings
▶ 四元註解:
Retention: 指定註解的功能範圍,三個SOURCE,CLASS,RUNTIME
Target:指定註解可以在哪些地方使用
Target:指定註解可以在哪些地方使用 Documented :
指定該註解是否會在javadoc 體現#
# ▶ 註解的注意事項:
#註解只存在於原始碼中,class位元組檔案中不包含
,註解會在class位元組碼檔案中存在,但運作時無法取得,
註解會在class位元組碼檔案中存在,運作時可以透過反射取得到
①:一般若有使用在 編譯時
進行一些預處理操作,例如產生一些輔助程式碼(如 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中文網其他相關文章!